Pasar una variable de PHP como un parámetro utilizando HTML onClick

Miré a través de muchos ejemplos similares, pero yo no podía hacer este trabajo.

Así, tengo este:

echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
      <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>');

Que el código que está dentro de la variable $nombre será diferente dependiendo de donde estoy.

No estoy tratando de hacer que las cosas se complica, así que lo primero, yo sólo estoy tratando de pasar el parámetro para la función trackIt (de hecho, me necesita pasar a 2 de ellos.)

Entonces, tengo una simple secuencia de comandos (sólo para ver si funciona):

<script>
//After you click on Track It

function trackIt(param) 
{
   alert("Hi!");
   alert(param);
}

</script>

Sin embargo, no funciona.

Si mi onClick función es onClick="trackIt()", entonces funciona bien y puedo alerta «¡Hola!» eliminando el parámetro.

Gracias por la ayuda! =]

  • Mirar el código html generado para obtener más pistas
  • Te olvidaste de poner comillas alrededor de su inserta variable. por ejemplo, usted está haciendo foo(bar), haciendo que la barra de una variable no definida, en lugar de foo('bar'), haciendo que la barra de una cadena.
InformationsquelleAutor Felipe | 2014-12-02

4 Kommentare

  1. 8

    Probar esta..

    echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
      <button class="btnTrack" onclick="trackIt(\'' . $name . '\')" >Track It!</button></td>');

    Nota: usted tiene que utilizar su camino si el parámetro de entrada es un valor numérico..


    Va a imprimir HTML como,

    <td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
    <button class="btnTrack" onclick="trackIt(test)" >Track It!</button></td>

    Pero debido a que la función trackIt necesidades de una cadena como parámetro de entrada, deberá imprimir este..

    <td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
    <button class="btnTrack" onclick="trackIt('test')" >Track It!</button></td>

    Como usted está usando ' como límites para definir cadenas en PHP, usted tiene que escapar de ella mediante \' con el fin de hacer ' personaje forma parte de la cadena.

    • Gracias, que funcionó!
    • Ahora, tengo que pasar un segundo parámetro con onclick="trackIt(\'' . $name . '\')" , debo crear otro post para que pregunta?
    • vea si usted puede averiguar cómo pasar otro parámetro primera.
    • He intentado un par de cosas diferentes, pero no funcionó. Luego, he leído todos los comentarios de nuevo para entender mejor cómo funciona, y gracias a @plbsam la nueva explicación, yo era capaz de lograrlo. Gracias chicos! =]
    • Genial.. Mejor que no hacer una pregunta sin intentar.. de lo Contrario no va a sobrevivir cuando stackoverflow es muerto.. 🙂
  2. 1

    La razón por la que esto no funciona es debido al hecho de que estés pasando un sin encapsular cadena como argumento en el HTML, sin embargo, ser interpretada como una variable de javascript, tales como:

    Uncaught ReferenceError: ValueOf$name is not defined


    O si la variable contiene espacios o caracteres especiales:

     Uncaught SyntaxError: Unexpected identifier

    Para resolver este problema, debe encapsular su cadena con las citas.

    "trackIt(\'' . $name . '\')"

    Si usted está usando un entero, una cadena de encapsulación no es necesario.

    jsFiddle ejemplos

    • Gracias por la explicación, sin embargo, "trackIt(\"' . $name . '\")" no funciona!
    • "trackIt(\"' . $name . '\")" no va a funcionar porque no puede escapar comillas dobles en un atributo que está encapsulada con comillas dobles.
  3. 0

    Para pasar varios parámetros que pueden lanzar la cadena mediante la concatenación con el valor ASCII como, por comillas simples podemos utilizar &#39

    var str= "&#39;"+ str+ "&#39;";

    Esto funciona para mí.

  4. -3

    Incluso si las otras respuestas son ciertas… Si usted no necesita realmente de impresión de todos los que html con php de forma diferente

    echo('<td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
          <button class="btnTrack" onClick="trackIt(' . $name . ')" >Track It!</button></td>');

    puede ser:

    <td colspan="3" style="background-color:#005673; text-align:right; padding: 4px 0px;">
              <button class="btnTrack" onClick="trackIt(<?php print $name;?>)" >Track It!</button></td>

    Uso de php sólo cuando sea necesario 🙂

    • Esto no resuelve el problema – el HTML generado todavía será roto.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea