【问题标题】:Getting innerHTML contains extra <br> tag, is this normal?获取 innerHTML 包含额外的 <br> 标签,这正常吗?
【发布时间】:2012-04-10 13:14:49
【问题描述】:

当我创建一个新元素并开始输入(contentEditable 设置为 true),然后查看它的 innerHTML 时,它总是在末尾包含一个额外的 &lt;br&gt;。如果我在输入之前查看 innerHTML,我得到了正确的值。这是正常的吗?我的问题是我正在计算使用&lt;br&gt; 标签的行数,我不能让它给我比我需要的更多。这是一些测试代码(javascript):

var _this = this;
function keyup(event)
{
    if (event.keyCode == 112)
    {
        alert(_this.code.innerHTML);
    }
}
function create()
{
    this.code = document.createElement("div")
    this.code.innerHTML = "Hello world.<br>I like testing popcorn.<br>Testing again.";
    this.code.contentEditable = "true";
    this.code.onkeyup = keyup;
    document.body.appendChild(this.code);
    _this = this;
}
window.onload = function()
{
    create();
}

代码是这样设置的,当你按下 F1 时,它会显示 div 的内容。我使用的是最新版本的 Firefox。

【问题讨论】:

  • 能否请您在更新 innerHtml 的地方也发布代码?
  • 只需运行测试代码,您可以通过在 div 中输入任何内容来更新 innerHTML。

标签: javascript html firefox innerhtml contenteditable


【解决方案1】:

首先,该标签应该是&lt;br /&gt; 而不是&lt;br&gt;,其次,div 是一个块元素,虽然您不应该看到&lt;br&gt; 标签,但在创建 div 后您会看到一个新行。

如果在那个div元素创建后输出innerHTML的值,输出是什么?

【讨论】:

  • 首先, 不使用 W3 验证器进行验证。当我在创建后输出 innerHTML 时,我得到的内容与我输入的内容相同,但没有结尾
    。就我的测试代码而言:“Hello world。
    我喜欢测试爆米花。
    再次测试。”虽然你说的确实有道理,但我仍然需要找到一些解决方案......
  • EiJay——你错了。标记&lt;br/&gt; 用于XHTML(不允许未闭合的标签),它是浏览器可以容忍的HTML 语法错误。 Web 上的绝大多数 XHTML 文档都以 HTML 形式提供,因此 HTML 标记很好(并且通常首选,因为许多浏览器无法处理 Web 上的 XML。
  • 这完全取决于页面是声明为 html 类型(可能不是)还是 xhtml 类型(更有可能)。
  • @ElJay:与几年前相比,这种可能性要小得多。现在用 XHTML 创建新网页的理由很少,而且正如 RobG 所指出的,IE
猜你喜欢
  • 2020-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 1970-01-01
  • 2011-12-13
  • 1970-01-01
  • 2013-03-08
相关资源
最近更新 更多