Javascript blues in PHP: getElementById & getElementsByC
Javascript blues in PHP: getElementById & getElementsByClassName
这应该很简单,唉,它给我带来了问题:
我有一个PHP页面,它为我提供了最多三个不同的td
内容迭代。第一个用display: table-cell
显示,其他用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">';
然后,我有一个对应于每个td
选项的链接 - 单击它应该运行一个函数loadLine
,我将一个对应于td
ID的字符串传递
echo "<a onclick='loadLine(".$playerLine.")' href='javascript:void(0)'>".$playerLine."</a>";
该脚本隐藏了类gameLineCell
的所有td
,并显示被单击链接的那个。
<script>
function loadLine(line) {
var lines = document.getElementsByClassName('gameLineCell');
for (var i = 0; i < lines.length; i++) {
lines[i].style.display = 'none';
}
document.getElementById(line).style.display = 'table-cell';
}
</script>
当我查看我的 PHP 页面的源代码时,一切都正确呈现 - 我的链接在loadLine
括号中显示正确的字符串,我的每个td
都存在,第一个显示,其他隐藏 - 但是我的链接不起作用。我尝试删除getElementsByClassName
序列,仅运行getElementById
,尽管无济于事。什么也没发生。
有什么想法吗?
非常有义务提供任何帮助,
安德鲁
编辑:错误的来源?Javascript正在削减我的字符串!EV-F1 成为 EV。现在研究原因以及如何修复。
这里有一些与字符串的正确转义和封闭有关的问题;我个人使用printf()
来打印 HTML,如下所示:
printf('<td style="display: table-cell" class="gameLineCell" id="%s" colspan="3">',
htmlspecialchars($playerLine, ENT_QUOTES, 'UTF-8');
);
这段代码尤其棘手:
echo "<a onclick='loadLine(".$playerLine.")' href='javascript:void(0)'>".$playerLine."</a>";
问题是$playerLine
不包含JavaScript字符串外壳,因此它会尝试将EV-F1
解析为EV - F1
(即EV
和F1
的减法(。要解决此问题,您需要使用 JSON 对变量进行编码,然后应用 HTML 转义:
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')
);
您显示的代码有拼写错误。这里有一个额外的)
for (var i = 0; i < lines.length); i++)
它应该是
for (var i = 0; i < lines.length; i++)
相关文章:
- jquery点击函数select&取消选择
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- Angular js-返回一个包含类似
- 一点javascript元编程&可链接的设置器
- 通过JSON&比较时间
- Jquery模板,如果xx&&如果yy
- jQuery工具验证器自定义效果-添加&消除影响
- Twitter引导程序Typeahead-Id&标签
- AngularJS&JSON-从Previous&下一个对象
- 什么是&&在没有if的行中的变量之间
- 关于引入外部javascript文件的问题&css通过https
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 使用ajax的服务器端分页&jQuery
- Javascript,如果条件在没有&&逻辑运算符当&&它不起作用
- 如何使用dropzone&vueJs
- 如何准确执行加载脚本&退出弹出窗口
- 如何添加CSS&JavaScript进入Windows窗体应用程序C#.net
- Solr查询以按日期月份获取数据&年
- 显示&作为&在jsp中使用angularjs而不使用ng-bind-html
- 如何惯用地手动销毁scope&在AngularJS中重新创建