2014-10-09 96 views
0

最近我遇到了未被捕获的语法错误,而且我不知道如何有效地调试它们。我使用的是Chrome浏览器,但是当发现未捕获的语法错误时,我无法看到发生了什么,因为Chrome的调试只能调试您自己的代码,而不是正在进行的代码,据我所知调试(无论如何,这是beginnerlevel)。什么是调试未被捕获的语法错误的有效方法?

所以我得到这个代码就在这里:http://jsfiddle.net/0e5ue9k7/2/

的问题是一个意外的 '}' 当我打电话

function userTurn(attack) { 
.... 
} 

在行283,这是由

function combat { 
.... 
} 

称为在按下按钮后在259行。我知道问题在于按钮onclick事件,但我不确定发生了什么问题,发生了什么以及如何更改它,因为语法错误未被捕获。处理这个问题的最好方法是什么?

任何帮助将不胜感激!如果有什么不清楚的,请告诉我。

+0

很明显你有一个语法错误。检查您的代码是否存在缺失'}' – andrex 2014-10-09 12:36:46

+0

我认为避免/发现这类错误的最好方法是在IDE上编写一个好的JS解析器,比如IDEA WebStorm,例如 – 2014-10-09 12:38:26

+0

@andrex在那里完成了... – user3840869 2014-10-09 12:38:49

回答

0

你不能找到失踪的“}”在你的JavaScript代码,因为错误是在你的程序吐出你生成的HTML代码。

<button class="combatMoves" onclick="userTurn(" help")"="">Help</button> 

看代码,你有

<button class="combatMoves" onclick="userTurn("help")"="">Help</button> 

当它应该是

<button class="combatMoves" onclick="userTurn('help')"="">Help</button> 

不过既然你已经建立了串',需要进行转义\'

'字符

通常当浏览器抛出当你点击某个东西时发生错误,并且找不到行号,就会点击你点击的元素。

基本修复:

controller.innerHTML = 'Choose an attack!<br><button class="combatMoves" onclick="userTurn(\'bow\')"> ... 

获取到不使用内联事件处理程序的做法。

+0

这正是我以为它是......但为什么突然onclick =“userTurn(”help“)”=“”即使我清楚地添加onclick =“userTurn(”help“)”?这是如何运作的? – user3840869 2014-10-09 12:53:18

+0

看看你输入的内容。它与空间无关。该空间是由该错误引起的。它必须对引起属性关闭的引号进行操作。 HTML被解析,它看到'onclick =“userTurn(”'它不会神奇地读出你的想法,并意识到接下来的几个字符属于该属性。 – epascarello 2014-10-09 12:54:19

+0

我明白了,非常感谢你的洞察力。会起作用的,因为它将它设置为一个字符串,所以我认为引号并不重要。 – user3840869 2014-10-09 12:59:20

0

在Chrome中,您可以通过单击调试器中的(||)图标来调试“未捕获的异常”。如果您想对发现的异常进行调试,请检查“暂停发生”选项。

https://i.imgur.com/WB4GDSr.png

相关问题