我这样写不对吗?为什么不能alert出来,请各位盆友看看
document.getElementsByClassName("wechat")
注意Elements是一个复数,所以获取到的是一个数组
这样写document.getElementsByClassName("wechat")[0]
,才可以获取到这个数组的第一个元素
let dom = document.getElementsByClassName("wechat")[0]
dom.onlick = function(){
alert(1)
}
document.getElementsByClassName
获取的是dom集合。
因为li的dom元素还没加载出来的手,就加载了js的脚本。因此执行无效。应该将js标签放在底下。或者将代码写在window.onload内:
window.onload=function(){
//do something
}
document.getElementsByClassName
方法获取的是一个dom数组,数组是不具有onclick方法的,只有具体dom元素才会有,所以你要给wechat元素绑定onclick事件,有两种方法:
第一种:假如你只有换一个wechat元素,document.getElementsByClassName[0] 获取具体元素,然后绑定onclick
第二种:遍历document.getElementsByClassName所获取的数组,然后依次给每个元素绑定onclick事件
文档是从上往下加载的,浏览器加载js的时候还没解析到你的html部分,所以不生效。二种解决方法:
1、将js引入文件放在body的最末尾,</html>结束的前面
2、所以得js代码包含在window.onload=function(){}里,表示解析到这的时候等待,等页面资源加载完成后再继续执行。
还要一个问题就是,你获取元素的时候是根据class名获取的,想一想class和id的区别,class可以有多个,根据类名查找元素获取的应当是一个数组,这种时候你可以在末尾加上一个[0]或者换其他方式获取。同理getElementsByTagName也是一样的。
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
把
js
放到页面底部或者用onload
包裹后getElementsByClassName
获取到的是类数组 要用循环或者转换为数组使用数组的遍历方法