La función devuelve el error “Uncaught SyntaxError: expected expression, got }” en el evento onClick.
Quiero cambiar una variable de JavaScript en la acción onClick.
pero mi consola muestra este mensaje de error: Uncaught SyntaxError: la sentencia de función requiere un nombre
No sé por qué JavaScript se comporta así:
Mis códigos:
<!-- begin snippet: js hide: false console: true babel: false -->
<!-- language: lang-js -->
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;
}
<!-- language: lang-css -->
.funcBtn{
width: 160px;
height: 80px;
background-color: red;
color: white;
position:absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
<!-- language: lang-html -->
<button type="button" onclick="createTable()">Create Table</button>
<div class="table_body"></div>
<!-- end snippet -->
Es muy interesante para mí saber por qué este código se comporta así, gracias.
davy.ai
El mensaje de error
Uncaught SyntaxError: function statement requires a name
ocurre cuando estás declarando una función anónima como una declaración, y requiere un nombre que se le asigne a la función. En tu código, estás intentando definir una función anónima dentro del atributoonclick
en el código HTML.Para solucionar este error, puedes definir una función con nombre fuera del atributo
onclick
y luego llamarla dentro. Por ejemplo:Luego, puedes llamar esta función dentro de
onclick
:Con esta modificación, el error debería resolverse y la variable
color
debería cambiarse según corresponda.