Reputation:
I am working on a project that has a table. in that table is milestones and parts of milestones.
This is my 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>';
}
}
}
?>
I need to send variable:
href="javascript:keuzeGebruiker(milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'].');" but that variable does not send to my JS function.
My first parameter is the name of the clicked milestone (example 'milestone403') and my second parameter is the id of the clicked milestone (example: '403').
But my console log is saying:
ReferenceError: milestone403 is not defined
This is my JS function:
<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>
You can see my parameters (name and value )
Why I can not get my parameter in my JS function?? Can anyone help me with this problem or has anyone a solution.
Upvotes: 1
Views: 80
Reputation: 139
ReferenceError: milestone403 is not defined means that js thinks your trying to use variable milestone403 . So i gues it'll help if you use apostrophe it'll help.
somethink like:
keuzeGebruiker("milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'].'");"
or
$milestoneString=milestone'.$milestone[0]['milestone_id']. ','.$milestone[0]['milestone_id'];
href="javascript:keuzeGebruiker(\''.$milestoneString.'\');"
Upvotes: 0
Reputation: 3050
If you have not use string in quote, it will consider as a variable. You should send string in quotes in function, below is not correct way
echo '<td><a href="javascript:keuzeGebruiker(milestone' . $milestone[0]['milestone_id'] . ',' . $milestone[0]['milestone_id'] . ');">' . $milestone[0] ['milestone_titel'] . '</a></td>';
Correct way is below
echo '<td><a href="javascript:keuzeGebruiker(\'milestone' . $milestone[0]['milestone_id'] . '\',\'' . $milestone[0]['milestone_id'] . '\');">' . $milestone[0]['milestone_titel'] . '</a></td>';
Upvotes: 0
Reputation: 23011
You need to quote the strings being passed into the javascript function, or else it will think they're javascript variables. Since you're using both single and double-quotes already, you'll need to escape your quotes. This is a case where templating or using HTML and then inserting PHP variables would make things easier.
echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone[0]['milestone_id']. '\',\''.$milestone[0]['milestone_id'].'\');">' . $milestone[0]['milestone_titel'] . '</a></td>';
Upvotes: 1