0

我有一个包含链接的页面,需要用 Javascript 重写。需要将 div id="container" 中的所有链接从 "post=post-number-234" 重写为 "?id=blog&post=post-number-234"。

目前我有这个脚本:

<script type="text/javascript">
<!--
var content = document.getElementById('content');
var list = div.getElementsByTagName("A");
for( var i = 0; i < list.length; i++ ) 
{ 
  document.links[i].href = '?id=blog&' + document.links[i].href
}
// -->
</script>

这工作正常。但我有 Fancybook 使用的图像链接。所有这些链接最初都链接到“img/image-name.jpg”。但是现在fancybook 不起作用,因为它在“?id=blog&img/image-name.jpg”中搜索图像。

如何将重写应用于 div“内容”中的所有链接,这些链接未链接到目录“img”?

谢谢!

4

3 回答 3

1

这工作正常

我怀疑是...

首先你得到一个 id 为 "content" 的 DOM 元素。然后你尝试从div应该失败的地方获取所有链接,ReferenceError: div is not defined因为它没有在任何地方定义(如果没有,你没有提供所有相关代码)。

如果这会成功,那么您将遍历找到的链接并按索引访问它们。但是来自错误的来源。而不是list你正在使用document.links

总结一下...

<script>
    var container = document.getElementById("container"),
        links = container.getElementsByTagName("a"),
        i = links.length,
        href;

    while (i--) {
        href = links[i].href;

        if (href.indexOf("img/") > -1) {
            continue;
        }

        links[i].href = "?id=blog&" + href;
    }
</script>
于 2012-05-12T09:22:23.837 回答
1

假设您的页面中有类似于以下内容的链接:

<a href="img/name.jpg"><img src="img/name.jpg" /></a>
<a href="post=post-number-234">Post Title - by Author Maybe?</a>

如果您不打算使用诸如 jQuery 之类的框架/库,那么您显然需要更多的繁重工作并过滤掉您不想改变自己的情况。所以像:

<script>
var content = document.getElementById("content")
  , list = content.getElementsByTagName("a")
  , i = 0
  , len = list.length;

for (; i < len; i++) {
   // check for "img/" directory or image file-extensions (gif, jpg, jpeg, png)
   if (!/^img\/|\.(?:gif|jpg|jpeg|png)$/i.test(list[i].href)) {
       list[i].href = "?id=blog&" + list[i].href;
   }
}
</script>
于 2012-05-12T09:25:57.500 回答
1

在循环内部,检查href字符串是否包含'img',如果没有找到则只修改它。

if (document.links[i].href.indexOf('img') == -1) {
  document.links[i].href = '?id=blog&' + document.links[i].href;
}
于 2012-05-12T09:17:27.787 回答