div innerhtml没有采取HTML

时间:2015-02-16 12:27:43

标签: javascript php html

我想更新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。

4 个答案:

答案 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>

DEMO

答案 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语法传递PHP变量

即使我们可以将PHP,JavaScript和HTML混合在一起,我们也需要在使用JavaScript和PHP的变量之前初始化正确的语言。

所以,最终的代码应该是:

echo "<script>document.getElementById('NotifyDiv').innerHTML = '<?php echo $html;?>'</script>";

否则,一切看起来都是正确的。