未捕获的TypeError:无法读取属性' createDocumentFragment'未定义的(使用wysiwyg)

时间:2015-04-10 19:36:58

标签: javascript jquery html wysiwyg

这是我的jQuery:

$(".wysiwygtext").on("keyup keypress paste mouseup", function (e, t) {
    clearTimeout(timeout);
    timeout = setTimeout(function (e, t) {
        var element = $(this).html(); //throws 'Uncaught TypeError: Cannot read property 'createDocumentFragment' of undefined'
        var value = $(this).val(); //throws 'Uncaught TypeError: Cannot read property 'toLowerCase' of undefined' error

        console.log(element);
        console.log(value);
    }, 2000);
});

.wysiwyg是一个应用于某些div的类,如此(html是从服务器生成的):

<div class='wysiwygtext' data-guid='" + statementGuid + "' value='" + statementGuid + "'>" + lastbody + "</div>

我只需要在任何文本更改时检索div(html)的内容和div的值(或ID),但我收到此错误:

  

未捕获的TypeError:无法读取属性'createDocumentFragment'   未定义

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

基本上,这是一堆undefined引用。这就是我最终解决这个问题的方法:

var timeout = null;
$(".wysiwygtext").on("keyup keypress paste mouseup", function (e, t) {
  clearTimeout(timeout);
  var element = $(this).html();
  var value = $(this).val();
  timeout = setTimeout(function (e, t) {
    console.log(element);
    console.log(value);
  }, 2000);
});

我在函数外部定义了timeout,因为clearTimeout(timeout);引发了timeout is undefined错误。接下来,我在超时之外定义了elementvalue$(this).html()$(this).val()没有引用正确的内容。最后,我将console.log(element)colsole.log(value)保留在超时内,因此他们将在上述事件之一后记录2秒。