2012-10-12 37 views
0

我似乎沒有找到任何辦法來解決這個out..so我猜即時將需要一些幫助.. 即時製作中,我有一個SQLite數據庫的PhoneGap應用程序。我執行一個查詢,並從數據庫中獲得一個動態創建的結果,事情是,我想爲每個記錄,我提取使包含它的div,作爲一個可編輯角色的按鈕..打開一個div成一個按鈕動態

比如讓說,我有這些列ID選項1選項分貝,我有三個記錄.. 這意味着我將有三個div的 我想,每一個DIV是一個按鈕,如果用戶點擊它是能夠執行刪除(或編輯/更新)查詢而不用擔心id 舉例來說,如果他選擇做DIV2進行查詢,將刪除第二個記錄..

到目前爲止我的代碼..

for (var i = 0; i < len; i++) { 
    var test1 = results.rows.item(i).option1; 
    var d = new Date(); 
    d.setTime(results.rows.item(i).date); 
    var newLI = document.createElement("LI"); 
    newLI.className = lt; 
    newLI.id = results.rows.item(i).id; 
    var container = ("<div id=\"" + results.rows.item(i).id + "\" class=\"test\"><div id=\"text\">option1</div><div id=\"data\">" + test1 + "</div></div>"); 
    newLI.innerHTML = cont; 
    var gl = document.getElementById("sqltest"); 
    gl.appendChild(newLI); 
} 
for (var i = 0; i < len; i++) { 
    var divid = "#" + results.rows.item(i).id; 
    $(divid).on("click", function() { 
     alert(divid); 
    }) 
} 

<ul id="sqltest"></ul> 

問題,上面的代碼,就是雖然每個DIV得到正確的ID ,當我點擊它,我總是得到例如#1相同的結果,雖然我可能有3周的div .. 而不必結果

div1 alert #1 div2 alert #2 

我得到

div1 alert #1 div2 alert#1 

我用警報只是簡化它,而不是警告會有DELETE from SQLDB WHERE id=results.rows.item(i).id;

+0

U可以用一個按鈕的html代替html嗎? – ryanc1256

+0

股利確實成爲clickable..however奇怪的是,雖然所有的即3周的div變成可點擊的,並意味着在DIVID確實目標的正確DIV,驚動時,它會返回錯誤值.. – nikolas

+1

哦,我沒有」沒有正確的閱讀問題,你總是可以提醒所有的變量,並看看代碼在做什麼?這通常幫助我 – ryanc1256

回答

1

你retreiving總是相同的「DIVID」變量,因爲JavaScript的範圍和封鎖的工作方式。這是一個非常常見的錯誤。你可以谷歌「JavaScript關閉臭名昭着的循環」以獲得更多關於此信息。

你應該爲這個替換您的

for (var i = 0; i < len; i++) { 

    (function() { 
     var divid = "#" + results.rows.item(i).id; 
     $(divid).on("click", function() { 
      alert(divid); 
     }); 
    })(); 
} 

這樣一來,可變DIVID在不同的範圍,每次申報。

我不明白這是否是唯一的問題。

+0

休息後,我意識到我做錯了什麼,但沒有解決如何解決它..美元(divid)得到正確的價值,但可能警報是採取了錯誤的,因爲警報是在函數內部執行的,實際上在循環結束和按鈕被按下之後,所以警報值錯誤是合理的。我會嘗試你的例子來看看thsat是否修復它..但我認爲這不是一個即時通訊具有畢竟.. – nikolas

+0

更新唯一的問題...它沒有做的伎倆畢竟...:S 如果我叫第二次的函數,那麼DIVID變量保存以前的值以及...:S – nikolas

+1

你在調用哪個函數?您可以點擊div的任意次數,並始終提醒其ID。請更具體,以便我可以幫助你。 – Pato

相關問題