2016-03-03 33 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>