1

这是我的 JavaScript 的onMouseOverDiv 标签事件处理程序。(它工作正常,至少在 Chrome 和 IE 中):

function changeCallout(sender, e) {
    document.getElementById(sender.id).className = "callout2";
}

我想要做的是设置包含在更改其类的 Div 中的 H2 标记的颜色属性。

我知道我应该能够访问颜色属性或更改类,但我无法弄清楚如何仅访问适当的 H2 标签(我知道getElementsByTagName)。这样做的语法是什么?

4

3 回答 3

2

document.getElementById(sender.id).getElementsByTagName('h2')将返回具有给定 id 的元素内所有 H2 元素的 NodeList。

于 2011-12-10T23:52:00.050 回答
2

假设想要h2的是 target 下的第一个div,然后使用以下相对于那个进行搜索div

var div = document.getElementById(sender.id);
var h2 = div.getElementsByTagName("h2")[0];

如果它不是第一个,只需更改0n(在第二行上)n所需标题的位置。

于 2011-12-10T23:52:41.763 回答
2

是的,getElementsByTagName 可以解决问题,但请记住,它也会获取嵌套元素。例如,如果您的 div 中有一个带有 h2 元素的 div,那么这些元素也会被转储到数组中。

我知道这不是您的问题,但您无需获取发送者元素的 id 即可在代码中使用它;只需使用 this 关键字作为参数,元素就会被传递给函数。它适用于内联 html 元素和 eventListener 调用,您不需要使用 getElementById。

<!DOCTYPE html>
<html>
    <head>
        <title></title>
        <style>
            div {width:100px;height:100px;background-color:#F00;}
            </style>
    </head>
    <body>

        <div onclick="onClick(this)">I'm a div</div>

        <script>
            function onClick(div) {
                alert(div.innerHTML);
            }
            </script>
    </body>
</html>
于 2011-12-11T01:40:19.357 回答