一个奇怪的问题

siaosa 2014-01-10 10:01:07
有以下脚本

var htm="<input value=\"aa\" />"; //注意是 />结束
$("#div1")[0].innerHTML = htm;
var b = $("#div1")[0].innerHTML;
alert(b); // />消失了


怎么赋值操作之后会让/>符号消失啊?

去掉Jquery也是一样的问题

var htm = "<input value=\"aa\" />"; //注意是 />结束
var obj = document.getElementById("div1");
obj.innerHTML = htm;
var b = obj.innerHTML;
alert(b); // />消失了


应该怎么解决才对啊?
...全文
141 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjdg 2014-01-11
  • 打赏
  • 举报
回复
Modifying innerHTML causes the content to be re-parsed and DOM nodes to be recreated 不知道,有没有高人,指出要害。具体是那些事件。
tony4geek 2014-01-10
  • 打赏
  • 举报
回复
/ 少了的。 应该是 正常
zhjdg 2014-01-10
  • 打赏
  • 举报
回复
这样看来。这一句 obj.innerHTML = htm; 就不是赋值这么简单。应该还有其他的东西要做,
siaosa 2014-01-10
  • 打赏
  • 举报
回复
不是说innerHTML符合W3C标准吗? 我查了W3C标准的input是 />闭合的
阿鱼 2014-01-10
  • 打赏
  • 举报
回复
我这里只有“/”消失了,应该是在取没有闭合标签的html时默认就没有“/”,况且最初html中input、br之类就都没有闭合的,所以这个应该是正常情况。

<div id="div1"><input value="aa" /></div>
<script type="text/javascript">
  alert($("#div1")[0].innerHTML);//一样是没有
</script>
siaosa 2014-01-10
  • 打赏
  • 举报
回复
我想知道赋值之后为什么/符号会自动消失
allali 2014-01-10
  • 打赏
  • 举报
回复
通常情况下画面上显示正常就可以了
家里敷泥呀 2014-01-10
  • 打赏
  • 举报
回复
测试结果显示只是少了“/”,少了“/”再正常不过了,少了“/>”就不科学。 如果你要问为什么会少了“/”?其实这个也很好解释。 首先你思考一个问题: java文件编译成class后再反编译成java文件,此时的java文件会和class一模一样吗? 答案很显然:不会。 那么这个问题也很好解释,一个input标签同样会别浏览器解析成input对象(要不我们怎么能在页面上看到文本框效果?),在具体的说,整个页面会被解析成一棵dom树。 接下来我们需要思考另一个问题:innerHTML属性是去查询最开始的浏览器解析前的源页面呢?还是从dom中获取它内部的对象并使用toString()(当然,这个toString是比喻义了)将其打印出来呢? 其实这个问题也好解释:既然我们都说innerHTML是一个属性了(调用它的本身就是一个对象,对象本身就有值,那他还有什么理由去查询源页面呢?就好比执行类的方法时,有必要去查看java源文件的内容吗?) 在比如,htm="<input value=\"aa\" /><span>123"; ,你看看效果。
chenzhi246265 2014-01-10
  • 打赏
  • 举报
回复
<input value=\"aa\" />这就是一个input标签啊,肯定解析的时候不会显示/>啊

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧