代码之家  ›  专栏  ›  技术社区  ›  F.P

原型中基于类的锚点操作

  •  0
  • F.P  · 技术社区  · 14 年前

    我试图在加载文档后操纵一些锚定,以使用Prototype更改它们的href属性。基于锚的类,它的href必须被重写以供跟踪软件使用。

    我把一些东西拼凑在一起,但不太明白为什么它不起作用。它总是返回未定义的,不管我搜索什么。

    <script type="text/javascript">
     var elements = $$(".replace");
     for (el in elements) {
      el.href = "other_href.html";
     }
    </script>
    <a href="this_href.html" class="replace">Link</a>
    

    当我 alert(el) 在循环中,它返回undefined或(当我搜索 a.replace

    我的思维错误在哪里?

    1 回复  |  直到 13 年前
        1
  •  2
  •   John Conde    14 年前

    未经测试:

    <script type="text/javascript">
    document.observe('dom:loaded', function() {
        $$(".replace").each(function(a) {
            a.writeAttribute('href', 'other_href.html');
        });
    });
    </script>
    <a href="this_href.html" class="replace">Link</a>
    

    我猜你的JavaScript是在浏览器加载它应该操作的HTML之前加载和执行的。它不能操纵还不存在的东西。这就是观察事件派上用场的地方。在本例中,我们正在等待DOM完成加载,但在浏览器呈现页面之前,我们需要进行更改。

    each() writeAttribute() 是一种很好的跨浏览器修改元素属性的方法。