Javascript:意外的令牌}

时间:2014-01-12 12:56:16

标签: javascript html

在尝试将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');我没有错误,但当然我需要传递文本输入的值作为参数。

3 个答案:

答案 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中添加一个点击处理程序,并避免使用其他逻辑,如下所示。

http://jsfiddle.net/9BtAM/13/

注意我认为您的设计需要进一步改进,因为在按键事件发生后不会设置元素值。因此,如果现有元素值可接受,则需要连接新的按键。

 <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。