2017-10-11 11 views
1

私はテーブルを持つプロジェクトで作業しています。この表ではマイルストーンとマイルストーンの一部です。JS関数に渡すPHP変数が機能しません

これは私のコードです:

<?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>'; 
     } 
    } 
} 
?> 

私は、変数を送信する必要があります。

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

私の最初のパラメータがクリックマイルストーン(たとえば「milestone403」) の名前と私の二番目のパラメータでありますクリックされたマイルストーンのIDです(例: '403')。

しかし、私のコンソールログが言っている:

ReferenceError: milestone403 is not defined

これは私の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> 

あなたは私のパラメータ(名前と値)

を見ることができます私のJS関数のパラメータ?誰もがこの問題で私を助けることができるか、誰にも解決策があります。

+3

:よう

somethink。 – aynber

答えて

1

javascript関数に渡される文字列を引用する必要があります。そうでなければ、javascript変数とみなされます。すでに一重引用符と二重引用符の両方を使用しているので、引用符をエスケープする必要があります。これは、テンプレートを使用するか、HTMLを使用してPHP変数を挿入すると、作業が簡単になるケースです。

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

はいこれが有効です。私は本当にあなたの問題を解決してくれてありがとう! – Haffoo

+0

あなたは大歓迎です! – aynber

0

文字列を引用符で囲まない場合は、変数と見なされます。あなたは以下、関数の中で引用符で文字列を送信

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

正しい方法は

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

にReferenceError下回って正しい方法ではないはずです。milestone403定義されていないjsのは、あなたが変数milestone403を使用しようと考えていることを意味します。 アポストロフィを使うと助けになると思います。あなたは、彼らが文字列ではなくjavascriptの変数であるとして、JavaScript関数に入る変数を引用する必要が

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

または

$milestoneString=milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id']; 
href="javascript:keuzeGebruiker(\''.$milestoneString.'\');" 
関連する問題