4-2选择题??

4-2选择题??

<!DOCTYPE html>
<html>
<head>
	<title>查找元素</title>
</head>
<body>
	<div id="wrap">
		<p id="wrap"><span id="span">ha</span></p>
	</div>
	<script>
		var div = document.getElementById("wrap");
		var p = document.getElementById("wrap");
		console.log(div.innerHTML);
		console.log(p.innerHTML);
		var span = p.getElementById("span");
		console.log(span.innerHTML);
	</script>
</body>
</html>

http://img1.sycdn.imooc.com//climg/5a51cc460001a38e07870275.jpg

div和p的id相同,为什么两次打印出来的都是div的innerHTML

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

因为getElementById只会匹配第一个符合要求的元素,这里两次使用getElementById得到的都是div标签。

Miss路 2018-01-08 11:52:33

当id重复的时候,会获取最外层的,里面的是无效的,因为dom查找的时候是从最外层开始查找的,因此会打印两遍div里面的内容。另外,这个代码不是4-2的选择题吗?我不知道你说的“还有就是这段代码就是视频里面老师为了说明id获取方法是document调用的而做的测试代码。”是什么意思。如果有问题请详细描述哦。祝学习愉快!

  • 提问者 gaogao_ #1
    谢谢老师,我知道那种写法会报错
    2018-01-08 11:54:53
Miss路 2018-01-08 11:00:13

两个问题:

1、id值是唯一的,不能两个id都叫wrap。
2、getElementById()方法是document调用的,不是某个dom对象调用的。这一句var span = p.getElementById("span");要改成var span = document.getElementById("span");

注意语法上的问题。加油!

  • 提问者 gaogao_ #1
    我的问题是为什么两次打印出来的都是div的innerHTML,而不是p的innerHTML。很明显,老师您答非所问了。还有就是这段代码就是视频里面老师为了说明id获取方法是document调用的而做的测试代码。
    2018-01-08 11:15:49
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
HTML5&CSS3进阶与常用框架 2018
  • 参与学习       315    人
  • 提交作业       136    份
  • 解答问题       626    个

如果你有H5、CSS3、JS基础,热爱前端并希望在前端应用方面不断进步,那就来吧,本路径为你带来的课程有HTML5进阶、CSS3进阶、JS面向对象、jQ基础、Less等,助你进一步提升前端开发技能

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师