“this.innerHTML”返回“undefined”,同时检查“this”DOM属性显示内容

时间:2017-11-15 13:23:46

标签: javascript dom innerhtml

我在SO上发现了很多(部分)类似的帖子,但它们都涉及非常明显的错误,通常是因为给定的this不是他们在要求this.innerHTML时所相信的。

但是在这里我面临的情况是,执行暂停(使用Firefox调试器)在涉及this.innerHTML的语句的断点上,同时:

  • 在控制台中醒目this.innerHTML返回undefined
  • this DOM属性显示`innerHTML:“......某些文字......”

后者符合我的预期,因为当前this是一个简单元素<span class="summary">...some text...</span>
所以我想知道this.innerHTML如何在这里返回undefined

另一种说明矛盾的方法,比较来自控制台的这两个答案:

  • this.innerHTML - &gt; undefined
  • $(this)[0].innerHTML - &gt; "...some text..."

我希望我只是(并且愚蠢地)错过了一些明显的东西。

编辑:我试图提供所涉及代码的摘录。

以下是模式化最有趣的部分:

$(document).ready(function() {
  // ...some stuff
  $('html').each(renderElement); // <-- here is the main call
  // ...some stuff
}

function renderElement() { // <-- the involved function
  if (this.innerHTML.match(/^\s*\[multi\]/)) { // <-- the this.innerHTML point
    this.innerHTML = renderString(this.innerHTML);
    return;
  }

  // Otherwise recursively explore each node
  $(this).contents().each(function() {
    switch (this.nodeType) {
      case Node.TEXT_NODE:
        // ...some stuff
        break;
      case Node.ELEMENT_NODE:
        // ...some stuff
        renderElement.call(this); // <-- here is the alternate (recursive) call
        break;
      default:
        // Do nothing for any other nodeType.
    }
  });
}

注意:当问题发生时,必须通过备用调用调用renderElement函数(因为涉及的<span>不是第1级元素的一部分)。

0 个答案:

没有答案