在尝试将this.value作为参数传递时,我一直收到意外的令牌}错误。
在我的身体里,我有:
<input type="text" size="3" id="rbgTextbox" onkeypress="if (ValidateRGBTextboxInput(event)) ChangeBackgroundColor("+this.value+"); else return false;">
功能:
<script type="text/javascript">
function ValidateRGBTextboxInput(e) {
return ById('rbgTextbox').value.length < 6 &&
(e.which >= 48 &&
e.which <= 57 ||
e.which >= 65 &&
e.which <= 70 ||
e.which >= 97 &&
e.which <= 102);
}
function ChangeBackgroundColor(color) {
alert(color);
ById('gameArea').style.backgroundColor = '#'+color;
ById('nextPiece').style.backgroundColor = '#'+color;
}
</script>
如果我更改ChangeBackgroundColor(“+ this.value +”); for ChangeBackgroundColor('000000');我没有错误,但当然我需要传递文本输入的值作为参数。
答案 0 :(得分:2)
您不需要引号。如果您使用双引号,则会破坏输入字段上onkeypress属性所需的字符串。希望有意义;)
<input type="text"
size="3"
id="rbgTextbox"
onkeypress="if (ValidateRGBTextboxInput(event)) ChangeBackgroundColor(this.value); else return false;">
此popular post on SO可以帮助您理解Javascript中的引号。
答案 1 :(得分:1)
尝试将if语句放在函数中并调用该函数。它会实现一些事情。它使您的代码更具可读性,并且可以轻松地在if和else中放置一些警报,以查看实际情况。
答案 2 :(得分:1)
我认为你不需要+ this.value +'语句只是this.value。
此外,我建议你只需在html中添加一个点击处理程序,并避免使用其他逻辑,如下所示。
注意我认为您的设计需要进一步改进,因为在按键事件发生后不会设置元素值。因此,如果现有元素值可接受,则需要连接新的按键。
<input type="text" size="3" id="rbgTextbox" onkeypress="CheckKeyPress(event);" />
使用javascript在这里
function CheckKeyPress(event) {
var element = document.getElementById('rbgTextbox');
if (ValidateRGBTextboxInput(keyPressEvent))
ChangeBackgroundColor(element.value);
else
return false;
}
哪个更容易理解。通常,您不希望在html中直接使用复杂的javascript。