html - 如何解决 javascript 获取类名节点返回未定义(undefined)
大家讲道理
大家讲道理 2017-04-11 10:29:30
[JavaScript讨论组]

先上图,一图胜千言

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

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

还是:

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

又或者

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

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

感谢回复!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
迷茫

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

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

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

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


obj.value="hi";


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

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

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号