我有一个页面,其中包含需要使用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&amp; img / image-name.jpg”中的图像。
如何将重写应用于div“content”中未链接到目录“img”的所有链接?
谢谢!
答案 0 :(得分:1)
在循环内部,检查href
字符串是否包含'img',并且只有在找不到时才修改它。
if (document.links[i].href.indexOf('img') == -1) {
document.links[i].href = '?id=blog&' + document.links[i].href;
}
答案 1 :(得分: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>
答案 2 :(得分: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>