我無法理解這裏出現了什麼問題。我從數據庫中獲取事件列表,並試圖創建一個自定義列表來顯示它們,並帶有一個回調onclick方法。我得到正確的值,我正確顯示它們,但onClick方法獲取最後一個項目ID的值,而不是它自己的值。JavaScript中的意外參數值
所以,如果我點擊任何項目列表中的我警告說
show itinerary for event: 10
而不是正確的ID(我現在有10個事件)
這是我如何處理我從數據庫得到項目:
function gotEvents(transaction, result) {
var eventList;
var myDbElements = $('#myDbElements');
var params = {
items:result.rows.length,
hasImage:false,
content:[]
}
if (result != null && result.rows != null) {
for (var i = 0; i < result.rows.length; i++) {
var row = result.rows.item(i);
var rowText = row["Name"] + '<br/>' + row["Start"].slice(0,9);
var rowId = row["id"];
var contentItems = {
text: rowText,
onClick: function(){ showEventItinerary(rowId) }
}
params.content.push(contentItems);
}
for (var j=0; j<result.rows.length;j++){
PrecAppPersistence.debugObject(params.content[i]);
}
eventList = PrecAppComponents.myList(params,$('#eventsList'));
}
PrecApp.I_SCROLL.refresh();
}
function showEventItinerary(event_ID) {
alert("show itinerary for event:"+event_ID);
}
這裏是我如何創建我的列表:
function List() {
var self;
var items;
var firstRun = true;
this.initialize = function(params,cont) {
self = this;
var container = cont;
var items;
container.empty();
opt = {
items:0,
content:[], // array with the content. Default is = {text:text,icon:imageURL,onClick: function(){}} itemId // not sure if we need this yet. supposed to be a manual ID for the item. EX: id taken from the db.
width: 300,
hasImage: false, //set true if you want to show an images
margin:10, //margin between items
}
for (i in params) opt[i] = params[i];
items = opt.items;
container.width(opt.width);
for (i=0;i<items;i++){
itemToAdd = '<div class="listItem" id="listItem'+i+'">'; //add IDS to add click
if (opt.hasImage) {
itemToAdd += "<img src=" + opt.content[i].image + " />";
}
itemToAdd += "<p>" + opt.content[i].text + "</p>";
itemToAdd += "<div class='clearFix'></div>";
itemToAdd += '</div>';
container.append(itemToAdd); //original #scroller might change?
listItem = $('#listItem'+i);
listItem.css('margin',opt.margin + 'px 0');
listItem.on('click',opt.content[i].onClick);
}
}}
我記錄我的變量,我的rowId有正確的ID。並將OnClick日誌中顯示的所有項目如下:
onClick:function(){ showEventItinerary(rowId)}
(?我不知道這是否是正確的,它不應該表現出ROWID,而不是ROWID變量的值)
我錯過這裏有什麼?
感謝
我是新來的JavaScript如此,爲了清楚起見,這是有我作爲參數調用自身的功能? – caiocpricci2
@ gameower是正確的,我已經更新了我的答案。 – Christophe