HTML实体在javascript的innerHTML中不起作用吗?

HTML实体在javascript的innerHTML中不起作用吗?,javascript,html,Javascript,Html,例如: <script type="text/javascript"> function fun() { var str = document.getElementById("h").value; document.getElementById("s").innerHTML = str; } </script> <?php $str = "<html>some other text"; echo '<input ty

例如:

<script type="text/javascript">
  function fun()
  {
    var str = document.getElementById("h").value;
    document.getElementById("s").innerHTML = str;
  }
</script>
<?php
 $str = "<html>some other text";
 echo '<input type="hidden" value="'.htmlspecialchars($str).'" id="h"/>';
 echo '<input type="button" onclick="fun()" value="click"/>';
 echo '<span id="s">change here</span>';
?>

函数fun()
{
var str=document.getElementById(“h”).value;
document.getElementById(“s”).innerHTML=str;
}

在上面的示例中,一些html实体(从PHP的htmlspecialchars()函数获得)以及一些纯文本存储在一个隐藏字段中。我想在用户单击按钮时在span元素中显示此内容。但我的观察是,在span中只显示纯文本,忽略了html实体部分,该部分应该是。但是,如果我在javascript中使用alert(str),它会按需要显示。我想知道为什么会发生这种情况。在上述代码的上下文中,HTML实体真的不能与innerHTML一起工作吗

我想我已经解决了这个问题。去掉PHP,如果
$str
包含
boo
,因此
htmlspecialchars
输出
strongboo/strong
,则HTML可能是这样的:

some other text
<input type="hidden" value="&lt;strong&gt;boo&lt;/strong&gt;" id="h" />
<input type="button" onclick="fun()" value="click" />
<span id="s">change here</span>
其他一些文本

此处更改
HTML实体与
innerHTML
配合得很好:也许(因为PHP与此无关),您可以在答案中添加一个堆栈片段(
按钮),演示您遇到的问题,因为目前还不清楚。显示示例
$str
。我只想知道为什么document.getElementById(“s”).innerHTML=str;会在span中产生“其他一些文本”,并留下html标记,如代码所示。请清楚a)您有什么值,b)您预期会发生什么,c)实际发生什么。”不起作用“这是无法回答的。它按预期的方式工作,很可能你的期望是错误的,但我们无法推断,因为我们不知道你期望它如何“工作”。