0

我有一个数组,其中包括一些页面:

var pages = ['test', 'blabla', 'xyz'];

我的文档包含一些这样的链接:

<a href="test.php">tes</a>
<a href="blabla.php">blabla</a>
<a href="xyz.php">xyz</a>
<a href="stackoverflow.php">test2</a>

我想要的是以下内容:

我想搜索整个文档并找到所有以我的数组中的单词开头的链接。然后,我想用“.html”替换“.php”并将当前 URL(不包括文件)添加到它们:

location.href.substring(0,location.href.lastIndexOf('/')+1)

所以,预期的结果应该是这样的:

<a href="file:///C:/test.html">test</a>
<a href="file:///C:/blabla.html">blabla</a>
<a href="file:///C:/xyz.html">xyz</a>
<a href="stackoverflow.php">xyz</a>

我尝试的是这样的:

$(function(){
var pages = ['test', 'blabla', 'xyz'];
$.each(pages, function(index, value) {
$("a[href='" + value + ".php']").attr("href", location.href.substring(0,location.href.lastIndexOf('/')+1) + $("a[href='" + value + ".php']").attr("href").replace('php', 'html'));
});
});

这有效,但并非总是如此。我在一个更大的文档中尝试了这个,它以这个错误结束:

$("a[href='" + value + ".php']").attr("href") 未定义

我想,有一种更简单、更好、更兼容的方式。但我不知道,这就是我在这里问的原因:D

4

2 回答 2

0
var pages = ['test', 'blabla', 'xyz'];   
$('a[href$=".php"]').each(function() {
  var hrefWithoutext = this.href.replace('.php','');
  if($.inArray(hrefWithoutext, pages)){
    this.href = 'file:///C:/' + hrefWithoutext + '.html';
  }
});​
于 2012-05-15T08:46:18.910 回答
0
var pages = ['test', 'blabla', 'xyz'];
$.each(pages, function (index, value) {
    $('a[href$=' + value + '.php]').attr("href", function () {
        return ('file:///C:/' + $(this).attr('href').replace('.php', '.html'));
    });
});
于 2012-05-15T08:59:06.593 回答