2017-10-11 4 views
1

Je travaille sur un projet qui a une table. dans ce tableau sont les jalons et les parties des jalons.Variable PHP passant dans une fonction JS Ne fonctionne pas

Ceci est mon code:

<?php 
$milestones = array(); 
while ($rij = $db->fetchassoc($result)) { 
    $milestones[$rij['milestone_id']][] = $rij; 
} 
foreach ($milestones as $milestone) { 
    echo '<tr id="' . $milestone[0]['milestone_id'] . '" class="milestone' . $milestone[0]['milestone_id'] . '">'; 
    echo '<td>' . $milestone[0]['milestone_id'] . '</td>'; 
    echo '<td><a href="javascript:keuzeGebruiker(milestone' . $milestone[0]['milestone_id'] . ',' . $milestone[0]['milestone_id'] . ');">' . $milestone[0]['milestone_titel'] . '</a></td>'; 
    echo '<td>' . $milestone[0]['client'] . '</td>'; 
    echo '</tr>'; 

    for ($i = 0; $i < count($milestone); $i++) { 
     if (empty($milestone[$i]['milestonefase_titel'])) { 
      echo '<tr id="' . $milestone[$i]['milestonefase_id'] . '" class="milestone' . $milestone[$i]['milestone_id'] . 'fase fase">'; 
      echo '<td></td>'; 
      echo '<td style="color: red">Geen titel beschikbaar!</td>'; 
      echo '<td></td>'; 
      echo '</tr>'; 
     } else { 
      echo '<tr id="' . $milestone[$i]['milestonefase_id'] . '" class="milestone' . $milestone[$i]['milestone_id'] . 'fase fase">'; 
      echo '<td>' . $milestone[$i]['milestonefase_id'] . '</td>'; 
      echo '<td>' . $milestone[$i]['milestonefase_titel'] . '</td>'; 
      echo '<td></td>'; 
      echo '</tr>'; 
     } 
     if (!isset($_COOKIE['milestones'])) { 
      echo '<style>.fase{display: none;}</style>'; 
     } 
     if (strpos($_COOKIE['milestones'], $milestone[0]['milestone_id']) !== false) { 
      echo '<style>.milestone' . $milestone[0]['milestone_id'] . 'fase{display: table-row!important;}</style>'; 
     } 
    } 
} 
?> 

Je dois envoyer la variable:

href="javascript:keuzeGebruiker(milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'].');" but that variable does not send to my JS function.

Mon premier paramètre est le nom de l'étape cliqué (par exemple 'de milestone403') et mon second paramètre est l'ID du jalon cliqué (exemple: '403').

Mais mon journal de la console dit:

ReferenceError: milestone403 is not defined

C'est ma fonction JS:

<script> 
    document.cookie = "milestones=" + [readCookie()]; 
    var array = readCookie().split(","); 

    function keuzeGebruiker(name, value) 
    { 
     if ($('.' + name + "fase").is(":visible")) // Als milestone zichbaar is, dan word milestone onzichtbaar 
     { 
      var index = array.indexOf(value); 
      if (index !== -1) 
      { 
       array.splice(index, 1); 
      } 
      document.cookie = "milestones=" + array; 
      $('.' + name + 'fase').attr('style', 'display:none !important')// Maak het onzichtbaar 
     } else // Als milestone onzichtbaar is, dat word milestone zichtbaar 
     { 
      array.push(value); 
      document.cookie = "milestones=" + array; 
      $('.' + name + 'fase').attr('style', 'display:table-row !important') 
     } 
    } 
</script> 

Vous pouvez voir mes paramètres (nom et valeur)

Pourquoi je ne peux pas obtenir mon paramètre dans ma fonction JS ?? Quelqu'un peut-il m'aider avec ce problème ou a quelqu'un une solution.

+3

Vous devez citer les variables entrant dans la fonction javascript, car ils sont des chaînes et pas des variables javascript. – aynber

Répondre

1

Vous devez indiquer les chaînes transmises à la fonction javascript, sinon elles penseront qu'elles sont des variables javascript. Puisque vous utilisez déjà des guillemets simples et doubles, vous devrez échapper vos guillemets. C'est un cas où la modélisation ou l'utilisation de HTML, puis l'insertion de variables PHP rendraient les choses plus faciles.

echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone[0]['milestone_id']. '\',\''.$milestone[0]['milestone_id'].'\');">' . $milestone[0]['milestone_titel'] . '</a></td>'; 
+0

Oui cela a fonctionné. Je vous remercie vraiment d'avoir résolu mon problème! – Haffoo

+0

Vous êtes les bienvenus! – aynber

0

Si vous n'avez pas utilisé de chaîne entre guillemets, cela sera considéré comme une variable. Vous devez envoyer la chaîne entre guillemets dans la fonction, ci-dessous n'est pas correctement

echo '<td><a href="javascript:keuzeGebruiker(milestone' . $milestone[0]['milestone_id'] . ',' . $milestone[0]['milestone_id'] . ');">' . $milestone[0] ['milestone_titel'] . '</a></td>'; 

Manière correcte est inférieure

echo '<td><a href="javascript:keuzeGebruiker(\'milestone' . $milestone[0]['milestone_id'] . '\',\'' . $milestone[0]['milestone_id'] . '\');">' . $milestone[0]['milestone_titel'] . '</a></td>'; 
0

ReferenceError: milestone403 n'est pas définie signifie que js pense que vous essayez d'utiliser milestone403 variable. Donc je pense que ça vous aidera si vous utilisez l'apostrophe.

somethink comme:

keuzeGebruiker("milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'].'");" 

ou

$milestoneString=milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id']; 
href="javascript:keuzeGebruiker(\''.$milestoneString.'\');"