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

查看:218
本文介绍了html - 如何解决 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测试;如下

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

这篇关于html - 如何解决 javascript 获取类名节点返回未定义(undefined)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆