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>

私が欲しいのは次のとおりです。

ドキュメント全体を検索して、配列内の単語で始まるすべてのリンクを見つけたいと思います。次に、「。php」を「.html」に置き換えて、現在の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 に答える