Javascript SyntaxError: Unexpected token '}'
Javascript SyntaxError: Unexpected token '}'
我有以下简单代码,但由于某种原因它会抛出意外标记“}”错误,我不完全确定原因。
我有以下代码来生成按钮
var OverlayMessage = ("Do you want to test these settings? <br> <h6>" + protocol + ":" + systemcodeSend + "-" + unitcode + " sending " + state + '</h6> <br> <a id="btnGreen" onclick="checkIfSettingsWork("' + protocol +'", "'+ systemcodeSend +'", "'+ unitcode +'", "'+ state +'");">Yes</a> <a id="btnRed" onclick="toggleVisibility(\'overlayAddDevice\')">No</a>');
console.log(OverlayMessage);
overlayMessage(OverlayMessage);
console.log的输出结果如下
<a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>
st运行ge 的事情是,如果我从调试器 运行,它工作正常没有错误。但是,当 运行 通过 onclick 事件时,它会出现意外令牌错误。
函数 checkIfSettingsWork 甚至没有被 运行,我通过让它登录到控制台来检查它,当被 onclick 事件 运行 时它没有返回任何东西但是当我 运行 以下 javascript 通过调试器。
checkIfSettingsWork("pollin", "31", "14", "on");
这是 checkIfSettingsWork 函数。
function checkIfSettingsWork(protocol, systemcodeSend, unitcode, state) {
console.log(protocol + systemcodeSend + unitcode + state)
}
这是无效的html:
<a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>
"
字符提前结束了您的 onclick
属性,因此浏览器最终将其解释为 onclick="checkIfSettingsWork("
。
将其更改为解决方法:
<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>
有效语法为
<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>
你犯了一个 low-level 错误。
这是无效的 onclick="checkIfSettingsWork("pollin", "31", "14", "on");"
您需要将 " 修改为 ' 。
另一件事是我认为当你声明 OverlayMessage
时,只是我的建议,也许你需要以统一的方式使用 "
和 '
字符。
这里有很多上下文,我认为需要将它们分开。您正在尝试在此声明中创建文本 HTML 和 JavaScript。同样在你混合单引号和双引号。在你的串联中。您可以同时使用两者,但它们必须匹配。
在一行中完成所有这些操作是不安全的。特别是 onClick 函数。我不想为 HTML 创建模板,直接为 JavaScript 函数创建模板,然后将变量提供给函数。
您的函数中的参数也不需要任何引号,您只需输入变量即可。
CheckIfSettingsWork(协议、系统代码发送、单元代码、状态)
我有以下简单代码,但由于某种原因它会抛出意外标记“}”错误,我不完全确定原因。 我有以下代码来生成按钮
var OverlayMessage = ("Do you want to test these settings? <br> <h6>" + protocol + ":" + systemcodeSend + "-" + unitcode + " sending " + state + '</h6> <br> <a id="btnGreen" onclick="checkIfSettingsWork("' + protocol +'", "'+ systemcodeSend +'", "'+ unitcode +'", "'+ state +'");">Yes</a> <a id="btnRed" onclick="toggleVisibility(\'overlayAddDevice\')">No</a>');
console.log(OverlayMessage);
overlayMessage(OverlayMessage);
console.log的输出结果如下
<a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>
st运行ge 的事情是,如果我从调试器 运行,它工作正常没有错误。但是,当 运行 通过 onclick 事件时,它会出现意外令牌错误。
函数 checkIfSettingsWork 甚至没有被 运行,我通过让它登录到控制台来检查它,当被 onclick 事件 运行 时它没有返回任何东西但是当我 运行 以下 javascript 通过调试器。
checkIfSettingsWork("pollin", "31", "14", "on");
这是 checkIfSettingsWork 函数。
function checkIfSettingsWork(protocol, systemcodeSend, unitcode, state) {
console.log(protocol + systemcodeSend + unitcode + state)
}
这是无效的html:
<a id="btnGreen" onclick="checkIfSettingsWork("pollin", "31", "14", "on");">Yes</a>
"
字符提前结束了您的 onclick
属性,因此浏览器最终将其解释为 onclick="checkIfSettingsWork("
。
将其更改为解决方法:
<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>
有效语法为
<a id="btnGreen" onclick="checkIfSettingsWork('pollin', '31', '14', 'on')">Yes</a>
你犯了一个 low-level 错误。
这是无效的 onclick="checkIfSettingsWork("pollin", "31", "14", "on");"
您需要将 " 修改为 ' 。
另一件事是我认为当你声明 OverlayMessage
时,只是我的建议,也许你需要以统一的方式使用 "
和 '
字符。
这里有很多上下文,我认为需要将它们分开。您正在尝试在此声明中创建文本 HTML 和 JavaScript。同样在你混合单引号和双引号。在你的串联中。您可以同时使用两者,但它们必须匹配。
在一行中完成所有这些操作是不安全的。特别是 onClick 函数。我不想为 HTML 创建模板,直接为 JavaScript 函数创建模板,然后将变量提供给函数。
您的函数中的参数也不需要任何引号,您只需输入变量即可。
CheckIfSettingsWork(协议、系统代码发送、单元代码、状态)