我想更新id为NotifyDiv的div的innerhtml
我想用以下的html代码更改它。
$html="<ul id='js-news'><li>HELLO WORLD!</li></ul>";
我正在使用以下代码进行更改。
echo "<script>document.getElementById('NotifyDiv').innerHTML='$html'</script>";
但没有变化。 但是我删除了id =&#39; js-news&#39;从上面的ul标签可以看出来。但是我需要id。
答案 0 :(得分:2)
如果您查看浏览器的源代码,您会看到:
<script>document.getElementById('NotifyDiv').innerHTML='<ul id='js-news'><li>HELLO WORLD!</li></ul>'</script>
所以我们可以看到你在JavaScript字符串中使用apotrophes,但字符串已经被撇号包围,所以它试图提前结束字符串:(在js-news中的字母j之前)
'<ul id='js-news'><li>HELLO WORLD!</li></ul>'
这可以通过使用JS字符串的转义引号来解决:
echo "<script>document.getElementById('NotifyDiv').innerHTML=\"$html\"</script>";
答案 1 :(得分:1)
基本上,您所拥有的代码会导致JS语法错误:
echo "...innerHTML='$html'</script>";
扩展为:
// opening ' closing ' => js-news === syntax error!
// \/ \/
echo "...innerHTML='<ul id='js-news'><li>HELLO WORLD!</li></ul>'</script>";
生成的JS代码:
document.getElementById('NotifyDiv').innerHTML='<ul id='js-news'><li>HELLO WORLD!</li></ul>'
语法高亮显示问题
请注意$html
周围的单引号和<{em> $html
字符串中的单引号。在JS中回显PHP值的最佳方法是使用json_encode
:
echo "...document.getElementById('NotifyDiv').innerHTML=", json_encode($html), "</script>";
输出应该是这样的:
<script>document.getElementById('NotifyDiv').innerHTML="<ul id='js-news'><li>HELLO WORLD!<\/li><\/ul>"</script>
现在,这些斜杠被转义,你可能不想要那样。值得庆幸的是,您可以传递给json_encode
: cf the docs的第二个参数。传递JSON_UNESCAPED_SLASHES
是您需要做的事情:
$html="<ul id='js-news'><li>HELLO WORLD!</li></ul>";
echo "<script>document.getElementById('NotifyDiv').innerHTML=".json_encode($html, JSON_UNESCAPED_SLASHES)."</script>";
输出:
<script>document.getElementById('NotifyDiv').innerHTML="<ul id='js-news'><li>HELLO WORLD!</li></ul>"</script>
答案 2 :(得分:0)
完美和您的查询如下(只需复制和粘贴并检查)
<?php
$html="<ul id='js-news'><li>HELLO WORLD!</li></ul>";
?>
<script type="text/javascript">
document.getElementById('NotifyDiv').innerHTML="<?php echo $html; ?>";
</script>";
答案 3 :(得分:0)
您需要使用<?php ?>
即使我们可以将PHP,JavaScript和HTML混合在一起,我们也需要在使用JavaScript和PHP的变量之前初始化正确的语言。
所以,最终的代码应该是:
echo "<script>document.getElementById('NotifyDiv').innerHTML = '<?php echo $html;?>'</script>";
否则,一切看起来都是正确的。