簡體   English   中英

使用多個變量更改href onclick

[英]Change href onclick with multiple variables

我對js知之甚少,所以請保持謙虛。

我正在使用下面的代碼,該代碼最初是用來交換類的。 我以為那就像將.className更改為.href一樣簡單,但是我錯了。

我的問題是,它只能運行一次然后停止。

$(document).ready(function(){
  $('#click').click(function () {
    $('#url').each(function(){
      var classes = ['/1','/2','/3','/4'];
      this.href = classes[($.inArray(this.href, classes)+1)%classes.length];
    });
  });
});

編輯:這是我正在使用的html:

<a id="url" href="/0">hello</a>

我的目標是在每次onclick時將/ 1切換為/ 0,然后將/ 2切換為依此類推。

您可以使用.attr() ,將變量設置為-1 click事件處理程序時,將變量遞增,直到變量達到classes.length為止,然后將變量重置為0 ,而不使用Remainder運算符。

 $(document).ready(function() { var classes = ['/1','/2','/3','/4']; var i = -1; var url = $("#url"); $('#click').click(function () { i = (++i < classes.length) ? i : 0; url.attr("href", classes[i]); console.log(url.attr("href")); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> </script> <button id="click">click</button> <a id="url" href="/0">hello</a> 

失敗是因為協議file://http://被靜默添加了href值。

所以改變這個:

$.inArray(this.href, classes)

至:

$.inArray(this.href.replace(/^.*?\/\//, ''), classes)

...會從字符串中刪除協議,然后再在數組中查找協議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM