Me gustaría pasar un parámetro (es decir, una cadena) a una función Onclick. Por el momento, hago esto:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
con result.name por ejemplo igual a la cadena "Agregar". Cuando hago clic en este botón, aparece un error que dice que Agregar no está definido. Como esta función funciona perfectamente con un parámetro numérico, supongo que tiene algo que ver con los símbolos "" en la cadena. ¿Alguien tuvo este problema antes?
javascript
html
JasperTack
fuente
fuente
Respuestas:
Parece que estás creando elementos DOM a partir de cadenas. Solo necesita agregar algunas citas alrededor de result.name:
Sin embargo, realmente debería estar haciendo esto con los métodos DOM adecuados.
Solo tenga en cuenta que si esto es un bucle o algo así,
result
cambiará antes de que se active el evento y necesitaría crear una burbuja de alcance adicional para sombrear la variable cambiante.fuente
Un par de preocupaciones para mí con respecto al uso de escape de cadena en onClick y a medida que aumenta el número de argumentos, será difícil de mantener.
El siguiente enfoque tendrá un salto: Al hacer clic, lleve el control a un método de controlador y el método de controlador, basado en el objeto de evento, puede deducir el evento de clic y el objeto correspondiente.
También proporciona una forma más limpia de agregar más argumentos y tener más flexibilidad.
En la capa de JavaScript:
La ventaja aquí es que podemos tener tantos argumentos (en el ejemplo anterior, data-arg1, data-arg2 ...) como sea necesario.
fuente
invoke
no se llama cuando hace clic en el botónJSON.stringify(obj)
en el HTML yJSON.parse(event.target.getAttribute('data-arg'))
en la capa de JavaScriptSugiero ni siquiera usar
onclick
controladores HTML , y usar algo más común comodocument.getElementById
.HTML:
JavaScript:
fuente
onclick
no es una función, es una propiedad a la que debe asignar una función:....onclick = function() {...};
Supongo que estás creando un botón usando el propio JavaScript. Entonces, el error en su código es que, se representará de esta forma
En este estado actual,
add
se considerará como un identificador como variables o llamadas a funciones. Deberías escapar del valor asífuente
Esta es una forma agradable y ordenada de enviar valor u objeto.
fuente
Prueba esto..
HTML:
JavaScript:
Nota: asegúrese de enviar argumentos entre '' signos como ('a1') en código html
fuente
también usas el símbolo de acento grave (`) en una cadena
tratar :
Para obtener más información, visite MDN y Stackoverflow
Por Chrome, Edge, Firefox (Gecko), Opera, Safari, pero no es compatible con Internet Explorer.
fuente
si su botón se genera dinámicamente:
Puede pasar parámetros de cadena a funciones de JavaScript como el siguiente código:
Pasé 3 parámetros donde el tercero es un parámetro de cadena espero que esto ayude.
fuente
Editado: si el requisito es hacer referencia al objeto global (js) en su código HTML, puede intentarlo. [No use comillas ('o ") alrededor de la variable]
Referencia de violín .
Javascript:
HTML:
fuente
Parámetro Múltiple:
fuente
Para pasar múltiples parámetros, puede convertir la cadena concatenando con el valor ASCII como, para comillas simples podemos usar '
fuente
Aquí hay una solución de Jquery que estoy usando.
Jquery
HTML
fuente
Puede pasar el valor de referencia o cadena simplemente coloque la función dentro de las "" comas doube debajo de la instantánea
fuente
Para pasar múltiples parámetros, puede convertir la cadena concatenando con el valor ASCII como, para comillas simples podemos usar
'
el mismo parámetro que puede pasar al
onclick()
evento. En la mayoría de los casos, funciona con todos los navegadores.fuente
si se usa para generar un conjunto de botones con diferentes parámetros de controladores. https://www.w3schools.com/js/js_function_closures.asp
si lo hacemos:
luego la función foo comienza después de cada página de actualización.
si lo hacemos:
luego, para todos los botones creados en el bucle, el último valor del parámetro "result.name"
fuente
si está usando asp puede usar javascript:
HTML:
Javascript:
fuente
Si está agregando un botón o un enlace dinámicamente y enfrenta el problema, entonces esto puede ser de ayuda. Lo resolví de esta manera.
Soy nuevo en HTML, JQuery y JS. Por lo tanto, puede que mi código no esté optimizado o sintaxis, pero estaba funcionando para mí.
fuente
En Razor, puede pasar parámetros dinámicamente: @ Model.UnitNameVMs [i] .UnitNameID
fuente
Puedes usar esto,
es trabajo para mi
fuente
fuente
Lo siguiente me funciona muy bien,
fuente
Puede usar este código en el método de hacer clic en el botón:
fuente