0

如何使用JavaScript(無JQuery)遍歷具有公共類的一堆DIV,然後檢查<span>標記中的值,根據值更改href價值到別的東西。這是一個示例標記。如何獲取childnode值和更改值

<div class="module-content"> 
<div class="js-tab-content S00"> 
    <h2 class="heading"> 
     <a href="http://someurl.com"> 
      <span>Adelaide</span> 
     </a> 
    </h2> 
</div> 
<div class="js-tab-content N00"> 
    <h2 class="heading"> 
     <a href="http://anotherurl.com"> 
      <span>Sydney</span> 
     </a> 
    </h2> 
</div> 
<div class="js-tab-content V00"> 
    <h2 class="heading"> 
     <a href="http://thisurl.com"> 
      <span>Melbourne</span> 
     </a> 
    </h2> 
</div> 
</div> 

回答

1
var tabContentDivs = document.getElementsByClassName("js-tab-content"); 

for (var i = 0, tabContentDiv; tabContentDiv = tabContentDivs[i]; ++i) { 
    var spanEl = tabContentDiv.querySelector(".heading span"); 
    var spanText = spanEl.innerText; 

    var aEl = tabContentDiv.querySelector(".heading a"); 
    aEl.href += "#" + spanText; // for example 
} 
+0

嗨, 能不能更具體的「標題」類中的定位跨度,因爲有每個DIV內的幾個跨度,但我將它們排除在外,因爲示例標記太長。 – calebo

+0

@caleb你的願望是我的命令 – Domenic

+0

謝謝你,但最後2行怎麼樣,所以不是將spanText值附加到URL的末尾,我怎麼檢查spanText是否是'阿德萊德',將href改爲取而代之的是http://www.foo.com。如果我有12個tabContentDiv,有沒有更好的方法來處理它,因此有12個if語句檢查spanText的值。希望這是有道理的。 – calebo

1

這就是:

var divs = document.getElementsByClassName("js-tab-content"); 
for(var i=0;i<divs.length;i++){ 
    var div = divs[i]; 
    if(!div) break; 
    var span = div.getElementsByTagName("span"); 
    var link = div.getElementsByTagName("a"); 
    if(span[0].innerHTML == "Adelaide") link[0].href = "http://google.com"; 
}