下面的代码不起作用!!!我的场景:我想得到,如果用户点击B,那么我会抛出带有点击值的弹出窗口。。例如,他点击了一个链接,然后我需要弹出你点击的值"A"限制:我不应该在每个标记中调用函数getcontent。。。我应该调用div本身。。。。请帮我做这件事。。
提前感谢..:-)
<html>
<head>
<title>test</title>
<script type="text/javascript">
function GetContent() {
alert('hi');
var outerDiv = document.getElementById("myDiv").innerHTML;
var h = outerDiv.getElementsByTagName("a").getElementsByClassName('anchr').innetHTMLalert(h);
}
</script>
</head>
<body>
<div id="myDiv" onclick='GetContent()'><a id="anchr" href="www.google.com">A</a>
<a class="anchr" href="javascript:openAlert();">P</a>
<a
class="anchr" href="www.google.com">B</a><a class="anchr" href="www.google.com">Q</a>
</div>
</body>
</html>
getElementsByTagName
返回节点列表,而不是元素。元素具有getElementsByClassName
方法,而NodeLists没有。您需要在NodeList上循环(它类似于数组),并依次处理它持有的每个元素getElementsByClassName
还返回一个节点列表。元素具有innerHTML
属性,而NodeLists没有。再次循环innerHTML
中没有t
- 在
innerHTML
和下一个语句(alert(h)
)之间需要一个;
我不应该在每个标记中调用函数getcontent。我应该调用div本身
- 停止使用内部事件属性(
onclick
和好友) - 开始使用
addEventListener
- 通过接受传递给事件对象的函数中的参数来捕获事件对象
- 检查该对象的
target
属性
例如:
function getContent(evt) { // Don't start function names with capital letters unless they are Constructor functions
var element = evt.target;
alert(element.innerHTML);
evt.preventDefault();
}
div.addEventListener("click", getContent);