首页 > 如何解决 javascript 获取类名节点返回未定义(undefined)

如何解决 javascript 获取类名节点返回未定义(undefined)

先上图,一图胜千言

我想获取所有类名为 selectize-dropdown-content 的子元素的 value( 3D, 60fps, Asian 等等。但是如图一所示,无论是:

var a=document.getElementsByClassName("selectize-dropdown-content")[0].getElementsByTagName("div")[1].innerHTML

还是:

var a=document.getElementsByClassName("selectize-dropdown-content")[0] 

又或者

var a=document.getElementsByClassName("selectize-dropdown-content")

都是undefine.
问题一:明明已经给变量a做了定义 ,为什么会用 undefine 作为反馈;
问题二:如果子元素的文本含有:“&” 这个这个字符,用innerHTML获得的字符会用 替换原有的“&”,这是为什么以及如何解决?

感谢回复!


首先关于第一个问题的前半部分:获取div元素的内容用innerHTML这个是可以的,题中所说的

var a=document.getElementsByClassName("selectize-dropdown-content")[0].getElementsByTagName("div")[1].innerHTML'
alert(a);

亲测完全可以输出60fps;
然后回答后半部分:为什么给div标签定义了value等属性,无法用js获取到呢?--答案是div标签本身并不具备value这个属性,所以获取该节点后,输出该节点的value会显示undefined;但是这里要注意另一个问题:用document.cteateElement 创建的div是可以输出value的,比如:

var obj=documnet.createElement("div");


obj.value="hi";


alert(obj.value);//输出hi

为什么呢?那是因为document.cteateElement 创建并不是一个真正意义上的 div标签,而是一个自定义的叫div的对象标签 然后又定义了一个叫value的属性,所以可以获取到对应的值;

接着回答第二个问题:在html中存在的一些字符无法直接输出,必须要用对应的转义字符才能输出到页面上,常见的有以下几个

代码中解析的时候,显示的是转义字符,可以用alert测试,在页面上显示的就是对应的字符,可以用innerhtml测试;如下

以上纯手打,如有帮助请采纳

【热门文章】
【热门文章】