-2

4つのページを指す4つのリンクがあります

<a href="asdf">asdf</a>
<a href="asdfer">1244</a>
<a href="iuiuy">qwer</a>
<a href="asdfasdf">asdfqew</a>

現在のページの URL 引数に基づいて、現在の URL から次の要素の href に番号を追加したいだけです

(つまり)「asdf」ページにいる場合、他の3つのリンクに合計番号を追加する必要があります

 <a href="asdf">asdf</a>
<a href="asdfer/123">1244</a>
<a href="iuiuy/123">qwer</a>
<a href="asdfasdf/123">asdfqew</a>

ここに私が使用したコードがあります

 var pathname = window.location.pathname;
var split = pathname.split("/")[4];
 console.log(jQuery("#pagetabs li a").each().next().attr('href')); 
if(split.match(/^\d+$/)){
  jQuery("#pagetabs li a").each(function(){
      href = jQuery(this).attr('href');
      newhref = href+'/'+ split;  
       jQuery(this).next().attr('href',newhref); 
  });

}

しかし、これは私が得ているエラーです

TypeError: a is undefined
http://example.com/misc/jquery.js?4
Line 12

私のコードに何か問題がありますか

4

2 に答える 2

0

.each メソッドはすべてのリンクを通過すると思います。しかし、最後のリンクに到達したら、「次のリンクに移動する」ことを意味する .next() と言います。そしてもうリンクはありません。したがって、それぞれの代わりに for ループを使用することをお勧めします。

var pathname = window.location.pathname;
var split = pathname.split("/")[4]; // number from current url 
if(split.match(/^\d+$/)){
    var links = jQuery("#pagetabs li a");
    for(var i=1; i<links.length; i++) {
        var link = links.eq(i);
        link.attr("href", link.attr("href") + "/" + split);
    }
}
于 2013-08-28T13:05:29.323 に答える
0

デモ

var split = 1563; // number from current url 
if(split){
  $("#pagetabs li a").each(function(index){
      var $this=$(this); 
      if(index!=0)
      $(this).attr('href',$this.attr('href')+'/'+ split)
    });

}
于 2013-08-28T13:07:14.350 に答える