Cannot set property ‘className’ of undefined
例如:
var item=document.getElementsByClassName('tab-wrap')[0].getElementsByClassName('item')
var img=document.getElementsByClassName('tab-wrap')[0].getElementsByTagName('img')
var txt=document.getElementsByClassName('tab-wrap')[0].getElementsByClassName('txt')
var content=document.getElementsByClassName('yanxuan')[0].getElementsByClassName('content')
console.log(item.length);
console.log(img.length);
console.log(txt.length);
console.log(content.length);
在获取元素时出现Cannot set property ‘className’ of undefined的错误时,要看一下它们的长度是否一致,把每一个获取的元素都console一下,如果获取长度不一致就会出现这个错误。
修改方式:
尽量在获取元素时用到它的父级元素来获取,这样更准确些,类似于上图的代码。
总结:
错误的原因在于获取的长度不一致,有可能是之前用过获取的tag或者是class,导致在获取元素时无法获取,也可以说是获取失败,获取元素不是本来想要获取的元素,获取错误。