PHP中的Javascript蓝色:getElementById&;getElementsByClassName
这应该足够简单,唉,这给了我一些问题: 我有一个PHP页面,它提供了最多三次不同的PHP中的Javascript蓝色:getElementById&;getElementsByClassName,javascript,php,html,getelementbyid,getelementsbyclassname,Javascript,Php,Html,Getelementbyid,Getelementsbyclassname,这应该足够简单,唉,这给了我一些问题: 我有一个PHP页面,它提供了最多三次不同的td内容迭代。第一个显示为display:table cell,其他显示为隐藏为display:none echo '<td style="display: table-cell" class="gameLineCell" id="'.$playerLine.'" colspan="3">'; 该脚本隐藏类的所有tdgameLineCell,并显示其链接被单击的对象 <script>
td
内容迭代。第一个显示为display:table cell
,其他显示为隐藏为display:none
echo '<td style="display: table-cell" class="gameLineCell" id="'.$playerLine.'" colspan="3">';
该脚本隐藏类的所有td
gameLineCell,并显示其链接被单击的对象
<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>
功能载重线(直线){
var lines=document.getElementsByClassName('gameLineCell');
对于(变量i=0;i
当我查看PHP页面的源代码时,所有内容都正确呈现——我的链接在loadLine
括号中显示正确的字符串,我的td
s中的每一个都存在,第一个显示,其他隐藏——但是我的链接不起作用。我已尝试删除getElementsByClassName
序列,只运行getElementById
,但没有效果。什么也没发生
有什么想法吗
非常感谢任何帮助
安德鲁
编辑:错误的来源?Javascript正在切断我的连接!EV-F1变成EV。查看原因和如何立即修复。您显示的代码有一个输入错误。这里有一个额外的
)
for (var i = 0; i < lines.length); i++)
for(变量i=0;i
应该是
for (var i = 0; i < lines.length; i++)
for(变量i=0;i
您显示的代码有一个输入错误。这里有一个额外的)
for (var i = 0; i < lines.length); i++)
for(变量i=0;i
应该是
for (var i = 0; i < lines.length; i++)
for(变量i=0;i
这里有一些问题与字符串的正确转义和封装有关;我个人使用printf()
printf('<td style="display: table-cell" class="gameLineCell" id="%s" colspan="3">',
htmlspecialchars($playerLine, ENT_QUOTES, 'UTF-8');
);
这里有一些问题与字符串的正确转义和封装有关;我个人使用printf()
printf('<td style="display: table-cell" class="gameLineCell" id="%s" colspan="3">',
htmlspecialchars($playerLine, ENT_QUOTES, 'UTF-8');
);
控制台上没有错误?这应该可以工作(通过Claudio Redi的修复),因此如果没有,您应该在控制台中得到错误(正如@Ja͢ck指出的)。尝试在没有PHP的情况下生成一个脚本,并将其发布到问题中——很可能,您会在执行此操作时找到它,但如果没有,它将提供我们可以帮助您调试的内容。@Ja͢ck是的,控制台中有一个错误。它在连字符处切断了我的字符串,例如,EV-F1
变成了EV
!控制台上没有错误?这应该可以工作(通过Claudio Redi的修复),因此如果没有,您应该在控制台中得到错误(正如@Ja͢ck指出的)。尝试在没有PHP的情况下生成一个脚本,并将其发布到问题中——很可能,您会在执行此操作时找到它,但如果没有,它将提供我们可以帮助您调试的内容。@Ja͢ck是的,控制台中有一个错误。它在连字符处切断了我的字符串,例如,EV-F1
变成了EV
!抓得好@Claudio Redi,但还是不行!即使没有getElementsByClassName
循环——仍然不起作用。@安德鲁:尝试在函数loadLine
上插入一个断点,看看该函数是否被调用为good catch@Claudio Redi,但它仍然不起作用!即使没有getElementsByClassName
循环——仍然不起作用。@安德鲁:尝试在函数loadLine
上插入一个断点,看看函数是否被调用。这是可行的!非常感谢@Jack!我将迁移到printf
。是的,这很有效!非常感谢@Jack!我将继续迁移到printf
。
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')
);