【问题标题】:Get computed number of ordered list item获取计算的有序列表项数
【发布时间】:2017-04-05 05:16:04
【问题描述】:

有没有办法获取有序列表项编号的内容?

var list = document.getElementById('list');
list.style.listStyleType = 'upper-roman';
   
<ol class="list" id="list">
  <li class="list__item">apple</li>
  <li class="list__item">banana</li>
  <li class="list__item" id="target">orange</li>
  <li class="list__item">pear</li>
</ol>

这将产生一个这样的项目列表。

I. apple
II. banana
III. orange
IV. pear

有没有办法获取#target 列表项的III 文本字符串?

编辑:

这里的罗马字符只是一个例子。我希望能够访问任何list-style-type 选项提供的内容。

【问题讨论】:

标签: javascript html dom


【解决方案1】:

我能想到的唯一方法是:

1) 获取item的索引(例如3)

2) 有这样的功能:https://stackoverflow.com/a/9083076/1324321

3) 通过函数运行索引

【讨论】:

  • 是的,这适用于罗马数字示例,但我更感兴趣的是可以让我访问 api 提供的任何选项中的内容。
  • 我已经用这个澄清更新了这个问题,谢谢。
【解决方案2】:

我创建了一个jsfiddle here,它可以向用户显示选择的选项。尽管 javascript 没有将此作为字符串保存,但我首先找到所选列表项的索引,然后我重新创建该项目的列表,并将“开始”属性设置为该索引。

这里是 HTML:

<ol>

  <li>first</li>
  <li>second</li>
  <li id="active">third</li>
  <li>Fourth</li>
</ol>

<br/>
<br/>
<div id='selected'>
</div>

还有 JQuery:

$(document).ready(function() {
  var intt = $('li').index($('#active')) + 1;
  $('#selected').html('<ol start="' + intt + '"><li></li></ol>');
});

JSFIDDLE

【讨论】:

  • 这可以很好地提取值并将其放在其他位置,但它不会将值作为字符串获取,因此可以进一步使用它来完成任何事情。谢谢。
【解决方案3】:

您可以使用 start 属性并迭代所有列表元素。

var list = document.getElementById('list'),
    start = list.start || 0;

list.style.listStyleType = 'upper-roman';
Array.prototype.forEach.call(list.getElementsByTagName('li'), function (a, i) {
    if (a.id === 'target') {
        console.log(i + start);
        console.log(a.innerHTML);
    }
});
<ol class="list" id="list" start="5">
  <li class="list__item">apple</li>
  <li class="list__item" >banana</li>
  <li class="list__item" id="target">orange</li>
  <li class="list__item">pear</li>
</ol>

【讨论】:

  • 这并不能真正回答问题。不过谢谢!
  • 我已更新问题以突出显示我最终尝试访问的字符串。请看加粗文本:它既不是start + index 值,也不是水果名称,而是III
猜你喜欢
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多