2013-10-10 44 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