我的错误框中有一个小问题/错误。我先给你看一下代码然后解释一下: 我称之为函数的地方:
$jsid = 0;
foreach ($errors as &$value) {
$jsid++;
echo $jsid;
error('', $value, $jsid);
}
......这就是功能:
function error($title, $error, $id)
{
echo "<div id='warning".$id."' class='errorbox' style='border-style:solid; border-width: 1px; border-color:#FFF;'>
<a style='float: left;' onClick='document.getElementById('warning".$id."').style.display = 'none';' aria-label='Exit View As...' class='_7fy'></a>";
if($title !== '') {
echo "<h3>$title</h3>";
}
echo "<p>$error</p></div>";
}
我所做的是因为我知道我会有多个具有相同ID的元素,所以我添加了foreach以便它们会有所不同然后在函数中,我会添加id传递给'warning' 。我看到它的方式是,它将确保JS onclick工作。有人可以解释什么是错的。一个修复程序将非常受欢迎,并在键盘上保存了很多头部。
答案 0 :(得分:2)
onClick="this.style.display = 'none'; return false;"
这更容易,不是吗?
编辑:我同意FAngel更准确:
onClick="this.parentNode.style.display = 'none'; return false;"
答案 1 :(得分:2)
你有一个基本的引用问题。混合使用 THREE 不同的语言,并努力使其发挥作用。您处于PHP模式,转储出包含javascript的html,并且所有内容都使用相同的引号。而不是这种丑陋的垃圾,使用HEREDOC,或者至少从混合中删除PHP,所以你只需要html + js,例如:
echo <<<EOL
<div id="warning{$id}" class="errorbox" style="border-style:solid; border-width: px; border-color:#FFF;">
<a style="float: left;" onClick="document.getElementById('warning{$id}').style.display = 'none';" aria-label="Exit View As..." class="_7fy"></a>
EOL
- 或 -
?>
<div id="warning<?php echo $id ?>" class="errorbox" style="border-style:solid; border-width: px; border-color:#FFF;">
<a style="float: left;" onClick="document.getElementById('warning<?php echo $id ?>}').style.display = 'none';" aria-label="Exit View As..." class="_7fy"></a>
<?php
注意引号如何“自然地”工作,而不需要任何转义。
答案 2 :(得分:1)
这是问题所在:
onClick='document.getElementById('warning".$id."').style.display = 'none';'
^ ^ - the string ends here
你有单引号('
)嵌套在单引号内,这是一个错误,并导致onClick
字符串提前终止。您需要将其中一个更改为双引号。
onClick=\"document.getElementById('warning".$id."').style.display = 'none';\"
^^ change to double-quotes, and escape for being inside PHP quote. ^^
答案 3 :(得分:1)
尝试格式化您的onclick部分,如下所示:
onClick=\"document.getElementById('warning".$id."').style.display = 'none';\"
所以,收尾报价不会有任何混乱
此外,您可以使用parentNode(不需要分配ID,但,如果您将a
标记与其他元素包装在一起,而不是使用ID)这部分将被打破):
onClick=\"this.parentNode.style.display = 'none';\"
如果是标记,parentNode将指向您需要关闭的div。事件处理程序中的这个指向事件发生的元素。
https://developer.mozilla.org/en-US/docs/DOM/Node.parentNode