Javascript ie8中此操作错误的源HTML无效

Javascript ie8中此操作错误的源HTML无效,javascript,internet-explorer,extjs,Javascript,Internet Explorer,Extjs,我明白了 SCRIPT601:此操作的源HTML无效。 ext-all-debug.js,第6769行,字符21 在IE 8中 这是电话线 el.insertAdjacentHTML(hashVal[0], html); 调试时,html中的值为“1” 这个问题我坚持了好几天。这与评级功能有关。我认为由于这个错误,评级星没有显示在ie 8中。其他浏览器也可以。 我已经给出了下面代码的相应部分。我正在使用extjs var starLink = star.createChild({

我明白了

SCRIPT601:此操作的源HTML无效。

ext-all-debug.js,第6769行,字符21

在IE 8中

这是电话线

el.insertAdjacentHTML(hashVal[0], html);
调试时,html中的值为
“1”

这个问题我坚持了好几天。这与评级功能有关。我认为由于这个错误,评级星没有显示在ie 8中。其他浏览器也可以。 我已经给出了下面代码的相应部分。我正在使用extjs

var starLink = star.createChild({
            tag: 'a',
            html: this.values[i],
            title: this.showTitles ? this.titles[i] : ''
        });
在创建此元素时,调用将转到以下部分,并且在上面指定的行上发生错误

 insertHtml : function(where, el, html){
            var hash = {},
                hashVal,
                range,
                rangeEl,
                setStart,
                frag,
                rs;

            where = where.toLowerCase();

            hash[beforebegin] = ['beforeBegin', 'previousSibling'];
            hash[afterend] = ['afterEnd', 'nextSibling'];


            if (el.insertAdjacentHTML) {
                if(tableRe.test(el.tagName) && (rs = insertIntoTable(el.tagName.toLowerCase(), where, el, html))){
                    return rs;
                }


                hash[afterbegin] = ['afterBegin', 'firstChild'];
                hash[beforeend] = ['beforeEnd', 'lastChild'];
                if ((hashVal = hash[where])) {
                    el.insertAdjacentHTML(hashVal[0], html);
                    return el[hashVal[1]];
                }

            } else {

IE对使用.innerHTML、.insertAdjacentHTML和类似文件非常挑剔

传递的HTML必须是完美的结构-它不允许任何类型的错误。如果有的话,根本不行。其他浏览器将执行与文档其余部分相同的“最佳猜测”

尝试输入一些非常简单的HTML值,如:

<p>Hello World!</p>
你好,世界


你会发现它是有效的。在这种情况下,您需要找出所提供的HTML有什么问题。如果它不起作用,那么您就有另一个问题。

虽然我们不知道您正在创建什么元素以及在哪里,但我假设您正在尝试向
表中添加一个新的
tr
元素。然而,这在IE<10中是不可能的。较旧的IE具有与其他浏览器完全不同的表模型,无法使用
insertAdjacentHTML()
访问表以创建行(
td
s)。另外,
table
tr
的直接后代的
innerHTML
也是只读的

在IE中向表中添加新行的最佳方法是使用
insertRow(index)
方法<代码>索引
是要添加行的位置。默认情况下,
索引
为-1,这将在表的末尾添加一个新行

MSDN上的这篇文章可能会有所帮助


顺便说一句,如果((hashVal=hash[where])在新浏览器中不再是有效语法。

我已经编辑了我的问题。你们能再看一次吗?答案仍然适用。一个
有一个无效的链接。我按照你说的做了。但是仍然是相同的错误
var starLink=star.createChild({tag:'a',html:this.values[I],href:'javascript:void',title:this.showthes?this.titles[I]:'})
它不是一个表。相反,我编辑了我的问题。你能再看一次吗?@1355我不熟悉extjs,但是…你确定你发布的代码是实际的错误源吗?(
ext-all-debug.js,第6769行第21个字符
).IE devtools有时会在指向正确的错误行时出错,甚至指向正确的js文件。您是否使用其他浏览器测试了代码?