2016-03-03 128 views
0

我需要从HTML代码中获取多个li的所有值。用javascript获取多个元素li

<div class="row"> 
<div style="margin-left:11px"> 
    <strong>Detail Product</strong> 
</div> 
    <div class="col-sm-12"> 
     <ul class="item-highlights"> 
      <li>4G LTE</li> 
      <li>Dual Sim</li> 
      <li>RAM 1GB</li> 
     </ul> 
    </div> 
    <div class="col-sm-12"> 
     <ul class="item-highlights"> 
      <li>ROM 8GB</li> 
      <li>Screen 5.5</li> 
      <li>Warranty 1 Year</li> 
     </ul> 
    </div> 

该如何到使用javascript:

var test = document.getElementById('block-system-main').getElementsByClassName('item-highlights item-highlights')[0].innerHTML; 

和我得到的答案是:

<li>4G LTE</li><li>Dual Sim</li><li>RAM 1GB</li> 
+0

** 1。**在哪里'块系统main'? ** 2。**为什么同一个类在'getElementsByClassName('item-highlight item-highlights')中使用两次'' ** 3。**要获得innerHTML,请遍历HTMLCollection并获取单个的“innerHTML”元件。 – Tushar

+0

1.对不起,我忘记了,block-system-main是

上的id 2.我以为我可以访问2级。你能帮我修改代码吗? –

回答

1

扩展在@Tushar评论:

var test = ''; 
[].forEach.call(document.querySelectorAll('#block-system-main .item-highlights'), function(item) { return test += item.innerText; }) 

查看演示 - Fiddle

+1

更好选择器:'document.querySelectorAll( '#块的系统主.item-亮点')' – Tushar

+0

但输出的答案是

  • 4G LTE
  • 双卡
  • RAM 1GB
  • ROM 8GB
  • 屏幕5。5
  • 担保1年
  • +1

    使用['textContent'](https://jsfiddle.net/jpfep9md/)只能获得'innerText' ???。 CC @StevenAndrian – Tushar

    0

    继承人一个容易理解的答案。

    var items = document.querySelectorAll(".item-highlights li"); 
    var values = []; 
    for(var n = 0; n < items.length; n++) 
        values.push(items[n].innerHTML); 
    

    如果你知道CSS那么它的简单改变呼叫“querySelectorAll”,因为它只能通过同样的方式做的CSS比较的东西,所以,你可以改变它,只要你喜欢。

    +0

    输出答案是6,我不想计算李标签。 –

    +0

    你是什么意思?那不是这是做什么。 “值”变量将包含一个字符串数组,每个字符串都是列表项的值 –

    0

    您应该可以选择每个li使用querySelectorAll然后map这些值。它应该是这样的:

    var listItems = Array.prototype.slice.call(document.querySelectorAll('li')); 
    
    
    var vals = listItems.map(function (item) { 
        return item.innerHTML; 
    }); 
    

    例子: http://jsbin.com/zumewidoyo/edit?html,js,console

    0

    如果你想选择的每个li元素,你可以做这样的事情:

    Live Preview

    HTML

    <div class="row"> 
    <div style="margin-left:11px"> 
        <strong>Detail Product</strong> 
    </div> 
        <div class="col-sm-12"> 
         <ul class="item-highlights"> 
          <li>4G LTE</li> 
          <li>Dual Sim</li> 
          <li>RAM 1GB</li> 
         </ul> 
        </div> 
        <div class="col-sm-12"> 
         <ul class="item-highlights"> 
          <li>ROM 8GB</li> 
          <li>Screen 5.5</li> 
          <li>Warranty 1 Year</li> 
         </ul> 
        </div> 
    

    的JavaScript

    //store the list elements 
    var lists = document.getElementsByTagName('li'); 
    
    //array to hold the li elements 
    var liElements = []; 
    
    //loop through the lists 
    for (var i = 0; i < lists.length; i++) { 
    
        //add the li element values to the array 
        liElements.push(lists[i].innerHTML); 
    
    } 
    
    //show the results 
    alert(liElements.join("\n")); 
    
    0

    该函数返回getElementsByClassName方法的阵列。只需遍历它而不是使用“[0]”来获取第一个元素。

    function getValue() { 
     
        var test = document.getElementById('block-system-main').getElementsByClassName('item-highlights'); 
     
        var array = []; 
     
        for (var i = 0; i < test.length; i++) { 
     
        var liList = test[i].getElementsByTagName('li'); 
     
        for (var j = 0; j < liList.length; j++) 
     
         array.push(liList[j].innerHTML); 
     
        } 
     
        return array; 
     
    } 
     
    alert(getValue());
    <div id="block-system-main"> 
     
        <div class="row"> 
     
        <div style="margin-left:11px"> 
     
         <strong>Detail Product</strong> 
     
        </div> 
     
        <div class="col-sm-12"> 
     
         <ul class="item-highlights"> 
     
         <li>4G LTE</li> 
     
         <li>Dual Sim</li> 
     
         <li>RAM 1GB</li> 
     
         </ul> 
     
        </div> 
     
        <div class="col-sm-12"> 
     
         <ul class="item-highlights"> 
     
         <li>ROM 8GB</li> 
     
         <li>Screen 5.5</li> 
     
         <li>Warranty 1 Year</li> 
     
         </ul> 
     
        </div> 
     
        </div> 
     
    </div>