如何将类附加到原型javascript框架中的元素?

时间:2011-07-05 21:21:54

标签: prototypejs

我在页面顶部有这个原型代码

<script type="text/javascript"> 

    if( window.location == 'http://example.com/about-us.html' ) {

        $('about-us').addClassName('active');
    }

</script>

这个html更喜欢这个javascript代码

<ul>

            <li id="about-us">
                <a href="#">
                    <span>About Us</span>
                </a>
            </li>

              <li id="something-else">
                <a href="#">
                    <span>Something Else</span>
                </a>
            </li>


  </ul>

但即使地址是正确的http://example.com/about-us.html,活跃的类也根本没有附加。我已经尝试了警报和警报工作,所以条件没问题,但是addclassname似乎无法正常工作。

我做错了什么?提前谢谢。

1 个答案:

答案 0 :(得分:1)

你就是这样做的。确保代码在元素已经在页面上之后运行。在您的情况下,这意味着您引用的script块必须在您引用的列表like this - live example之后,因为您没有做任何事情来延迟代码。如果您希望script列表上方,则可以执行以下操作:

document.observe("dom:loaded", function() {
    // Your code here
});

Live example ...但是你最好只将你的脚本放在body元素的底部,就在结束</body>标记之前,作为YUI的人和其他人recommend

如果元素在您的代码运行时确实存在,我的猜测是您正在查看带有“查看源”或类似内容的结果HTML。对DOM的运行时更改(包括向元素添加类)不会反映在“视图源”中,它只是从服务器传递的页面的副本。您可以在大多数浏览器(或Firebug for Firefox)中内置的开发人员工具中使用“DOM”视图来查看DOM树的当前状态。