Javascript blues in PHP: getElementById & getElementsByClassName -
this should simple enough, alas it's giving me issues:
i have php page gives me 3 different iterations of td
contents. first shown display: table-cell
, , others hidden display: none
.
echo '<td style="display: table-cell" class="gamelinecell" id="'.$playerline.'" colspan="3">';
&
echo '<td style="display: none" class="gamelinecell" id="'.$playerline.'" colspan="3">';
i have link corresponding each td
option -- clicking supposed run function loadline
pass string corresponds td
id. id strings akin 'ev-f1' -- 5 characters, number, hyphen.
echo "<a onclick='loadline(".$playerline.")' href='javascript:void(0)'>".$playerline."</a>";
the script hides td
s of class gamelinecell
, , displays 1 link clicked.
<script> function loadline(line) { var lines = document.getelementsbyclassname('gamelinecell'); (var = 0; < lines.length; i++) { lines[i].style.display = 'none'; } document.getelementbyid(line).style.display = 'table-cell'; } </script>
when view source of php page renders -- links show proper strings in loadline
brackets, each of td
s present, first showing , others hidden -- links not work. i've tried removing getelementsbyclassname
sequence, running getelementbyid
, though no avail. nothing happens.
any ideas?
much obliged help,
andrew
edit: source of error? javascript cutting strings! ev-f1 becomes ev. looking whys , how fix now.
there few issues here related proper escaping , enclosure of strings; use printf()
print html, like:
printf('<td style="display: table-cell" class="gamelinecell" id="%s" colspan="3">', htmlspecialchars($playerline, ent_quotes, 'utf-8'); );
this piece of code in particular tricky:
echo "<a onclick='loadline(".$playerline.")' href='javascript:void(0)'>".$playerline."</a>";
the problem $playerline
doesn't contain javascript string enclosures , attempt resolve ev-f1
ev - f1
(i.e., subtraction of ev
, f1
). fix that, need encode variable using json , apply html escaping:
printf('<a onclick="loadline(%s)" href="javascript:void(0)">%s</a>', htmlspecialchars(json_encode($playerline), ent_quotes, 'utf-8'), htmlspecialchars($playerline), ent_quotes, 'utf-8') );
Comments
Post a Comment