我有一个数组,其中包含一些页面:
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
答案 0 :(得分: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';
}
});
答案 1 :(得分: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'));
});
});