Estoy llamando a una función con un parámetro de una propiedad innerHTML pero no se mostró nada, este es mi código:

var myVar="Ali";
      summaryPanel.innerHTML += "<a href='javascript:sayHello("+ myVar+");'>" + "Say Hello" + "</a>";


 function sayHello(myVar)
{   
        window.alert(myVar);
}
-1
Ali Noureddine 1 sep. 2014 a las 21:04

3 respuestas

La mejor respuesta

Prueba esto:

var a = document.createElement('a');
a.appendChild(document.createTextNode('Click me'));
a.addEventListener('click', function() {
    sayHello(myVar);
}, false);
summaryPanel.appendChild(a);

Algunas notas:

  • Evite controladores de eventos en línea, que requieren funciones globales
  • Evite contaminar el alcance global
  • Evite crear elementos html a partir de cadenas que utilicen variables no confiables (puede ser el caso de myVar). Esta práctica es vulnerable a la inyección html.
  • Evita htmlElement.innerHTML += something. Esto borrará todos los controladores de datos y eventos agregados a elementos anteriores dentro de htmlElement
4
Oriol 1 sep. 2014 a las 17:34

Para utilizar la función con parámetro en href, debe escapar de las comillas dobles, consulte la sintaxis a continuación.

return "<a  hreg ='javascript:void(0)' onclick='showErrorPopup(\""+message+"\")'>"+value+"</a>";
function showErrorPopup(message){
    alert(message);
}

donde he usado \ para escapar de las comillas dobles

1
Bathri Nathan 8 jul. 2019 a las 06:24

Prueba esto

var myVar = "Ali";

summaryPanel.innerHTML += "<a href='javascript:void(0)' onclick='sayHello("+myVar+")' />";

function sayHello(param){
        windows.alert(param);
}
-1
Ahmad 1 sep. 2014 a las 17:13