我有一個奇怪的問題,我已經寫了上的jsfiddle工作正常,但當我把它寫在我的HTML沒有任何反應函數...工作在JsFiddle但不在現場的Vanilla Javascript函數?
var el = document.querySelectorAll(".sp-methods li:first-child");
for (i = 0; i < el.length; i++) {
alert('sad')
el[i].style.display='none';
}
我的全HTML是
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script>
/*if(!window.location.href.indexOf("gpf") > 0){
alert('contains gpf, show 4-6 days');
} else {*/
var el = document.querySelectorAll(".sp-methods li:first-child");
for (i = 0; i < el.length; i++) {
alert('sad')
el[i].style.display='none';
}
/*}*/
</script>
</head>
<body>
<ul class="sp-methods">
<li class=" ">Hide me</li>
<li class=" ">Dont hide me</li>
</li>
</ul>
</body>
</html>
但它在這裏工作,我不知道爲什麼?
'console.log(el.length)'你的代碼工作正常,它只是由於執行代碼時找不到任何元素。 –
您的元素尚未加載。正如德米特里所說,在你的元素被聲明之後,把你的代碼*。 –
因爲你的小提琴運行onload,並且你的代碼在所有元素加載之前都在頭部運行。這就像在製作披薩之前吃披薩一樣。您需要等待元素訪問它們。因此,將代碼放在主體的末尾,或者在引用的元素之後,或者在文檔準備就緒或者在窗口上啓動後加載 – epascarello