2013-10-10 95 views
1

每當我點擊某個字母時,我想從第一個插槽value開始更改爲我點擊的字母value。是否將letter.onclick = letterClick(this);放入for循環中是正確的,還是應該以其他方式實現它。另外,letterClick()函數應該包含什麼?使用JavaScript更改按鈕的值

// Makes slots and letters for the chosen word. 
function maker() { 
    for (i=0; i<word.length; i++) { 
     var slot = document.createElement("input"); 
     var letter = document.createElement("input"); 
     var letters=(shuffledWord).split(""); 
     slot.type = "submit"; 
     slot.value = ""; 
     slot.id = "slot" + i; 
     slot.setAttribute('id', 'slot'); 
     letter.type = "submit"; 
     letter.value = letters[i]; 
     letter.id = "letter" + i; 
     letter.onclick = letterClick(this); 
     letter.setAttribute('id', 'letter'); 
     document.getElementById("slotbar").appendChild(slot); 
     document.getElementById("letterbar").appendChild(letter); 
    } 
} 
+0

創建更多按鈕將意味着有更多的供應和相同的需求,所以按鈕的值會減少。但是,如果你有很少的按鈕,那麼剩下的那些按鈕就會很有價值。如果你可以直接控制按鈕的供應,那麼你可以改變這個值。如果沒有,那麼也許你可以說服人們,按鈕是真棒,從而帶動了需求和價格。或試圖說服他們按鈕吸吮,他們不應該想要任何,從而降低需求和價格。除此之外,我不確定。 – Claudiu

+0

大聲笑,聽起來像我的經濟艙。 – danrodi

回答

3

不是真的,this指的是你運行的方法maker的上下文。所以大多數情況下,您將它作爲窗口,並且在綁定onClick處理函數時不想調用該函數。它應該是一個函數引用。

嘗試

letter.onclick = letterClick.bind(this, letter); 

現在的功能將與您的第一個參數爲字母元素來調用。

當你

letter.onclick = letterClick(this); 

它會立即調用函數,並將其結果作爲處理程序,即如果它doen't返回另一個功能REF那纔是真正的處理程序,它不會工作。

+0

謝謝!這實際上是有效的,因爲它給了函數letterClick()中的字母值,但我應該如何用字母的值替換槽值? – danrodi

+0

@danrodi你的意思是在函數letterClick中嗎? – user2253634

+0

你可以做elem.previousElementSibling.value ='字母的值' – user2253634