2016-12-09 172 views
1

我的代碼存在問題。我正在使用spotify WEB Api構建學校的Spotify應用程序。我的問題是,我將在一個表中使用一個for循環來輸出數據,並創建個人ID,如按鈕的功能=Javascript jquery幫助w/for循環按鈕

<button value="5BJeN4SVEKe204y2SiszOe" id="btn_0">Lorem</button> 
<button value="0xmaV6EtJ4M3ebZUPRnhyb" id="btn_1">Lorem</button> 
<button value="0rSLgV8p5FzfnqlEk4GzxE" id="btn_2">Lorem</button> 
<button value="0esxMkxlIDKbkWL8Vuj35V" id="btn_3">Lorem</button> 

等。每個按鈕還有一個代表相冊ID的值。然後,我使用.toArray將這些按鈕轉換爲一個數組,以便我可以獲得每個按鈕所需的值。是否有可能使一個函數的方式,當我按btn_0它會得到btn_0的值,然後輸出到控制檯?然後該函數會爲每個按鈕。我試着做一個,但它只是從每個值輸出數據,如位置:

$(document).on('click', '.Abuttons', function(e) { 
    var array = $("button").toArray(); 

for (var i=0; i < array.length; i++) { 
$.ajax({url: "https://api.spotify.com/v1/albums/"+ array[i].value +"/tracks", success: function(result) { 
     console.log(result); 
    }}); 
    } 
}); 

我知道我有類.Abuttons那裏,但我想在它之前做一個for循環,因此會叫每一個按鈕,但它沒有工作。希望你明白,並希望得到所有的幫助。

P.s我第一次來這裏,所以我不能讓格式工作在我的jQuery代碼。

+0

目前還不清楚你在這裏尋找什麼。創建一個函數來獲取點擊按鈕的值並記錄它相對簡單:'$('button')。click(function(){console.log(this.value);});'。我有點不清楚你想用循環做什麼。 –

+0

最終,我相信你在這裏遇到的唯一錯誤是成功回調的不好的調用。 –

回答

1

ajax成功是回調方法,但是當你在一個循環後使用for循環時,它不會等待第一個ajax回調觸發!它適用於第二個循環等 一個解決方案是爲了聲明一個變量i來進行計數,然後爲ajax調用創建一個函數,在成功回調中,如果變量i小於for循環次數功能再次達到循環!

0

您可以使用jQuery $(this)來獲取值屬性的情況下,目標值:

$('[id^=btn_]').on('click', function(e) { 
 
    $.ajax({ 
 
    url: "https://api.spotify.com/v1/albums/" + $(this).attr("value") + "/tracks", 
 
    success: function(result) { 
 
     console.log(result); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<button value="5BJeN4SVEKe204y2SiszOe" id="btn_0">Lorem</button> 
 
<button value="0xmaV6EtJ4M3ebZUPRnhyb" id="btn_1">Lorem</button> 
 
<button value="0rSLgV8p5FzfnqlEk4GzxE" id="btn_2">Lorem</button> 
 
<button value="0esxMkxlIDKbkWL8Vuj35V" id="btn_3">Lorem</button>

0

如果我理解你的要求,你不需要建立一個陣列。相反,您可以在其自己的事件處理程序中閱讀點擊按鈕的value。然後,您可以像這樣在您通過AJAX調用來獲取信息的URL該值,事:

$(document).on('click', 'button', function(e) { 
 
    $.ajax({ 
 
    url: "https://api.spotify.com/v1/albums/" + this.value + "/tracks", 
 
    success: function(result) { 
 
     console.log(result); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button value="5BJeN4SVEKe204y2SiszOe" id="btn_0">Lorem</button> 
 
<button value="0xmaV6EtJ4M3ebZUPRnhyb" id="btn_1">Lorem</button> 
 
<button value="0rSLgV8p5FzfnqlEk4GzxE" id="btn_2">Lorem</button> 
 
<button value="0esxMkxlIDKbkWL8Vuj35V" id="btn_3">Lorem</button>

0

您的按鈕可能是包裹在一個元素。喜歡的東西,

<div class="my-buttoms"> 
    <button value="..."></button> 
</div> 

因此,你可以綁定在這個div一個click事件並獲得點擊目標。

$('.my-buttons').on('click', (e) => console.log(e.target.value)) 

$('.w').on('click', function(e) { 
 
    if (e.target.tagName === 'BUTTON') { 
 
    alert(e.target.value); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div class="w"> 
 
    <button value="1">1</button> 
 
    <button value="2">2</button> 
 
</div>

0

所以,我覺得你可能是過於複雜:

https://jsfiddle.net/bashaen/vewae2t7/3/

$( '按鈕');在JQuery中已經返回它所有目標元素的數組。

var arr = $("button"); 
// Actually Contains - [button, button, button, button] 

$。每次將通過按鈕很像環路濾波器,但也有不同的好處。

$.each(arr, function(i, e) { // i = index, e = element 
    console.log($(e).val()); 
    // or if you're more comfortable with it. 
    console.log($(this).val()); 
}); 

另外,同時做一個.success()和一個.fail(),看你的ajax實際上是否經過。