鍍金池/ 問答/HTML/ 為什么js文件不生效?

為什么js文件不生效?

圖片描述

圖片描述

我這樣寫不對嗎?為什么不能alert出來,請各位盆友看看

回答
編輯回答
舊螢火

document.getElementsByClassName("wechat")注意Elements是一個復(fù)數(shù),所以獲取到的是一個數(shù)組
這樣寫document.getElementsByClassName("wechat")[0],才可以獲取到這個數(shù)組的第一個元素

2017年9月30日 12:56
編輯回答
她愚我

document.getElementsByClassName("wechat")[0]

2017年9月28日 07:35
編輯回答
傲寒

document.getElementsByClassName
方法獲取的是一個dom數(shù)組,數(shù)組是不具有onclick方法的,只有具體dom元素才會有,所以你要給wechat元素綁定onclick事件,有兩種方法:

第一種:假如你只有換一個wechat元素,document.getElementsByClassName[0] 獲取具體元素,然后綁定onclick

第二種:遍歷document.getElementsByClassName所獲取的數(shù)組,然后依次給每個元素綁定onclick事件

2017年1月21日 19:30
編輯回答
老梗

你要等待dom加載完畢再加載js文件。不然你一開始加載js他獲取不到dom,把文件放在body下面

2018年3月12日 05:17
編輯回答
妖妖

你需要了解一下瀏覽器解析過程,請將js腳本放置于body下。

2018年6月23日 21:03
編輯回答
六扇門

因為li的dom元素還沒加載出來的手,就加載了js的腳本。因此執(zhí)行無效。應(yīng)該將js標(biāo)簽放在底下。或者將代碼寫在window.onload內(nèi):

window.onload=function(){
      //do something
}
2018年9月2日 03:51
編輯回答
笑忘初

把 script 標(biāo)簽寫到頁面底部

2017年4月8日 03:08
編輯回答
挽青絲

js放到頁面底部或者用onload包裹后
getElementsByClassName獲取到的是類數(shù)組 要用循環(huán)

var wechat = document.getElementsByClassName("wechat");
for(var i=0;i<wechat.length;i++){
  wechat[i].onclick = function(){
    console.log(this)
  }
}

或者轉(zhuǎn)換為數(shù)組使用數(shù)組的遍歷方法

var wechat = document.getElementsByClassName("wechat");
wechat = Array.prototype.slice.call(wechat);
//or
wechat = Array.from(wechat);//兼容差
wechat.forEach(function(v){
  v.onclick = function(){
    console.log(this)
  }
})
2017年5月12日 21:08
編輯回答
維她命

文檔是從上往下加載的,瀏覽器加載js的時候還沒解析到你的html部分,所以不生效。二種解決方法:
1、將js引入文件放在body的最末尾,</html>結(jié)束的前面
2、所以得js代碼包含在window.onload=function(){}里,表示解析到這的時候等待,等頁面資源加載完成后再繼續(xù)執(zhí)行。
還要一個問題就是,你獲取元素的時候是根據(jù)class名獲取的,想一想class和id的區(qū)別,class可以有多個,根據(jù)類名查找元素獲取的應(yīng)當(dāng)是一個數(shù)組,這種時候你可以在末尾加上一個[0]或者換其他方式獲取。同理getElementsByTagName也是一樣的。

2018年6月14日 13:54
編輯回答
青裙

這是Dreamweaver?

2017年2月19日 11:27