2017-07-07 81 views
2

我正在尋找循環並更新網站中的和文本內的文本。我已經嘗試了下面的內容,但不會更新H1標籤。使用Vanilla JS更改多個h1&h2元素的值

document.getElementsByTagName("H1").innerHTML = "My New H1"; 

document.getElementsByTagName("H1")[0].innerHTML = "My New H1"; 

我還需要能夠獲取頁面上的元素數量,並循環遍歷每個元素並更新它們?你如何在Vanilla JS中做到這一點?它不能使用jQuery。

+0

使用for循環遍歷集合 – Li357

回答

1

可能是您在其他代碼中出現錯誤。這應該工作

document.getElementsByTagName("h1")[0].innerHTML = "My New H1"; 

您還可以使用querySelectorAll

document.querySelectorAll("h1")[0].innerHTML = "My New H1"; 

querySelectorAllgetElementsByTagName不區分大小寫,因此它應該工作H1h1

對於循環,您可以使用(ES5):

var elems = document.querySelectorAll('h1'); 
if (elems.length) { 
    for(var i=0; i<elems.length; i++){ 
    elems[i].innerHTML = 'text'; 
    } 
} 
+0

感謝您的迴應,但我收到以下錯誤; digitaliy.js:16未捕獲的類型錯誤:無法在Object.run(digitaliy.js:16)設置屬性 '的innerHTML' 的未定義 在index.html的:17 –

+0

VAR elems的= document.querySelectorAll( 'H1'); console.log(elems.length) - 你有什麼輸出? – qiAlex

+2

什麼都沒有,我找到了問題,我沒有等待頁面加載,添加了一個document.addEventListener(「DOMContentLoaded」,function(){});它的工作 –

0

如果您有多個標籤Hx,請使用for()來遍歷該集合。

var tagsh1 = document.querySelectorAll('h1'); 
for(var i=0; i<tagsh1.length; i++){ 
    tagsh1[i].innerHTML ='some text'; 
} 
+0

試過這個,代碼運行但是h1的內容沒有變化 –

+0

在''之前的html內容末尾添加JS代碼。 – CoursesWeb

-1
document.getElementsByTagName("H1")[0].innerHTML = "My New H1"; 

上面的代碼應該第一個h1標籤節點上運行。

要遍歷所有h1元素,可以使用forEach函數。

var h1 = document.getElementsByTagName("h1"); 
h1.forEach((d,i)=>d.innerText = "New h1 text " + i); 
+0

試過這個,得到錯誤; digitaliy.js:17 Uncaught TypeError:h1.forEach不是函數 at Object.run(digitaliy.js:17) at index.html:17 –

+0

'getElementsByTagName'返回一個HTMLCollection(儘管在WebKit瀏覽器上它返回一個' NodeList')...它沒有'forEach'方法。從它創建一個數組。 – Li357