-1

下面的代码不起作用!!!我的场景:我想得到,如果用户点击 B,那么我会抛出带有点击值的弹出窗口。例如,他点击 A 链接,那么我需要抛出带有点击值的弹出窗口“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>
4

1 回答 1

2
  1. getElementsByTagName返回NodeList而不是Element。元素有getElementsByClassName方法,NodeLists 没有。您需要遍历 NodeList(它类似于一个 Array)并依次处理它保存的每个 Element。
  2. getElementsByClassName还返回一个NodeList。元素有一个innerHTML属性,NodeLists 没有。再次,循环。
  3. innerHTMLt里面没有
  4. 你需要一个;betweeninnerHTML和你的下一个语句 ( alert(h))。

我不应该在每个标签中调用函数 getcontent。我应该调用 div 本身

  1. 停止使用内在事件属性(onclick和朋友)
  2. 开始使用addEventListener
  3. 通过接受您传递到那里的函数中的参数来捕获事件对象
  4. 检查该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);
于 2013-09-01T15:40:46.380 回答