Javascript:看似有效的代码,导致未捕获的错误:NOT_SUPPORTED_ERR:第3行上的DOM异常9

问题描述

|
var returned = values.make(function (value,index) {
    return items[index].value = value;
});
我有上面的片段。 值是要分配给不同元素的值的数组。 Make本质上等效于Array.prototype.map。
Array.prototype.make = function (loop,playground) {
    var loop = loop || function (value) { return value },playground = playground || this;

    if (loop.Type !== \"Function\") throw \"Loop [0] is not a function.\";

    var returned = [];
    for (var i = 0; i < this.length; i++)
        returned[i] = loop.apply(playground,[this[i],i,this]);

    return returned;
};
另外,我在同一文件中有
Function.prototype.Type = \"Function\";
,因此不是
.Type
会引发错误。
.Type
效果很好。 除功能外,这些还具有
.Type
\。
Object.prototype.Type = \"Object\";
Array.prototype.Type = \"Array\";
RegExp.prototype.Type = \"RegExp\";
String.prototype.Type = \"String\";
Number.prototype.Type = \"Number\";
Boolean.prototype.Type = \"Boolean\";
XMLHttpRequest.prototype.Type = \"XMLHttpRequest\";
Date.prototype.Type = \"Date\";
项目是不同元素的数组。
[<input type=\"text\" />,<input type=\"text\" />,<input type=\"text\" />]
我不断收到此错误。
Uncaught Error: NOT_SUPPORTED_ERR: DOM Exception 9 on line 3
我收到该错误,它没有任何意义,因为该行上没有任何代码。 我全亏了。 有人注意到该代码有什么问题吗? 更新:我不知道发生了什么,但我已解决。 由于没有人给出正确的答案,因此,我只会将其提供给唯一尝试过的人。 *拍手拍手拍手*     

解决方法

您可以张贴一个重现此错误的小例子吗? 除此之外,您的Javascript中还有一些错误: 我在这里添加了分号:
var loop = loop || function (value) { return value; },playground = playground || this;
尽管不需要分号,但我还是喜欢使用分号,因为否则您可能会被细微的错误所困扰。 并且,您需要使用
typeof
而不是
.Type
if (typeof loop !== \"function\") throw \"Loop [0] is not a function.\";
另外,如果
items
只是一个字符串数组,那么
items[index].value
就没有意义,因为字符串没有
value
属性。这部分对我来说尤其可疑。尽管我没有得到与我留下的错误相同的错误,但我认为值得仔细检查。 您提到您正在使用第三方库,因此有关
typeof
的部分并不重要。您还提到过您在数组中使用了实际的
input
元素,因此第二部分也不重要。 我再次尝试了您的代码,这次用
document.createElement
创建了
input
元素:
Array.prototype.make = function (loop,playground) {
    var loop = loop || function (value) { return value; },playground = playground || this;

    if (typeof loop !== \"function\") throw \"Loop [0] is not a function.\";

    var returned = [];
    for (var i = 0; i < this.length; i++)
        returned[i] = loop.apply(playground,[this[i],i,this]);

    return returned;
};

var items = [];
items.push(document.createElement(\"INPUT\"));
items.push(document.createElement(\"INPUT\"));
items.push(document.createElement(\"INPUT\"));

var values = [4,5,6];

var returned = values.make(function (value,index) {
    return items[index].value = value;
});

console.log(items[0].value,items[1].value,items[2].value);

//firebug shows: 4 5 6
因此,看来您的代码本身正在工作。您可以在新页面上单独尝试此代码吗?这样,您可以验证原始页面上是否有与您的代码交互并导致此错误的东西。     ,我在不同的场景中遇到了同样的问题,但是使用最新版本的Prototype(1.7代替1.5)修复了它。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...