function return 'Uncaught SyntaxError: expected expression, got }' error in onClick event
function return 'Uncaught SyntaxError: expected expression, got }' error in onClick event
我想在 onClick 操作中更改一个 Javascript 变量。
但是我的控制台 return 这个 错误 消息:Uncaught SyntaxError: function statement requires a name
我不知道为什么 JavaScript 会这样:
我的代码:
const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const tableAdd_HTML = '<button class="funcBtn" onclick="javascript:(function() { alert("color changed"); color = 3; })()">Run js function in onClick action</button>';
table_body.innerHTML = tableAdd_HTML;
}
.funcBtn{
width: 160px;
height: 80px;
background-color: red;
color: white;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>
我很想知道为什么这段代码会这样,谢谢。
alert("color changed")
中的第一个引号与 onclick="
中的引号匹配,因此它结束了属性。
在属性中使用单引号,使其与属性定界符不匹配。
然后您需要确保这不会与分隔整个 HTML 字符串的引号冲突。您可以转义单引号,但一个简单的解决方案是使字符串成为模板文字。
const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const tableAdd_HTML = `<button class="funcBtn" onclick="javascript:(function() { alert('color changed'); color = 3; })()">Run js function in onClick action</button>`;
table_body.innerHTML = tableAdd_HTML;
}
.funcBtn{
width: 160px;
height: 80px;
background-color: red;
color: white;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>
您可以通过使用 DOM 对象而不是 HTML 字符串和内联 JavaScript.
来避免所有这些引用问题
const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const button = document.createElement("button");
button.classList.add("funcBtn");
button.addEventListener("click", function() {
alert("color changed");
color = 3;
});
button.innerText = "Run js function to change color";
table_body.innerHTML = '';
table_body.appendChild(button);
}
.funcBtn {
width: 160px;
height: 80px;
background-color: red;
color: white;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>
我想在 onClick 操作中更改一个 Javascript 变量。
但是我的控制台 return 这个 错误 消息:Uncaught SyntaxError: function statement requires a name
我不知道为什么 JavaScript 会这样:
我的代码:
const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const tableAdd_HTML = '<button class="funcBtn" onclick="javascript:(function() { alert("color changed"); color = 3; })()">Run js function in onClick action</button>';
table_body.innerHTML = tableAdd_HTML;
}
.funcBtn{
width: 160px;
height: 80px;
background-color: red;
color: white;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>
我很想知道为什么这段代码会这样,谢谢。
alert("color changed")
中的第一个引号与 onclick="
中的引号匹配,因此它结束了属性。
在属性中使用单引号,使其与属性定界符不匹配。
然后您需要确保这不会与分隔整个 HTML 字符串的引号冲突。您可以转义单引号,但一个简单的解决方案是使字符串成为模板文字。
const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const tableAdd_HTML = `<button class="funcBtn" onclick="javascript:(function() { alert('color changed'); color = 3; })()">Run js function in onClick action</button>`;
table_body.innerHTML = tableAdd_HTML;
}
.funcBtn{
width: 160px;
height: 80px;
background-color: red;
color: white;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>
您可以通过使用 DOM 对象而不是 HTML 字符串和内联 JavaScript.
来避免所有这些引用问题const table_body = document.querySelector('.table_body');
let color = 550;
const createTable = function() {
const button = document.createElement("button");
button.classList.add("funcBtn");
button.addEventListener("click", function() {
alert("color changed");
color = 3;
});
button.innerText = "Run js function to change color";
table_body.innerHTML = '';
table_body.appendChild(button);
}
.funcBtn {
width: 160px;
height: 80px;
background-color: red;
color: white;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<button type="button" onClick="createTable()">Create Table</button>
<div class="table_body"></div>