根据Prototype中的类操作锚点的href

时间:2010-09-14 15:31:52

标签: javascript prototypejs

我正在尝试在加载文档之后操作一些锚点,以使用Prototype更改其href属性。根据锚的类,必须重写其href以供跟踪软件使用。

我一起攻击了一些东西但却无法弄清楚它为什么不起作用。它始终返回undefined,而不管我搜索的内容。

<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 个答案:

答案 0 :(得分:2)

未测试:

<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完成加载,但在浏览器呈现页面之前,我们要进行更改。

我还利用了Prototype的each()功能。这是循环遍历数组和任何枚举的好方法。 writeAttribute()是一种很好的跨浏览器修改元素属性的方法。