【问题标题】:Javascript substr in Internet Explorer 8Internet Explorer 8 中的 Javascript substr
【发布时间】:2013-10-30 16:27:21
【问题描述】:

使用 Internet Explorer 8 运行以下代码时出现错误:

for (var lang_elem in this.langElems) {
    if (this.langElems.hasOwnProperty(lang_elem)) {  // ignore attributes down the prototype chain
        var www1 = this.langElems[lang_elem].length;
        var xxx1 = line.substr(0, www1);
        var yyy1 = this.langElems[lang_elem];

        if (xxx1 == yyy1) {
            elem_type = lang_elem;
            break;
        }
    }
}

调试器停止在定义 xx1 的行(我显然定义了这三个变量用于调试目的)并显示以下消息:

Unterbrechung bei JScript-Laufzeitfehler - Das Objekt unterstütz dieese Eigenschaft oder Methode nicht。

翻译成

在 JScript 运行时中断错误 - 对象不支持该属性或方法。

我查过了,但据我所知,IE8 应该支持 substr 方法。我用 line.substr(0,2) 调用它,它应该可以工作(没有负参数)。

有人知道为什么会显示此错误吗?

【问题讨论】:

  • line 尚未在您显示的任何代码中定义。
  • 什么是line?在它之前做一个console.log(typeof line)。输出是什么?
  • 使用 slice 或 !! strLong.split(strSubStr)[1];

标签: javascript internet-explorer-8


【解决方案1】:

你确定line此时是一个字符串吗?这通常是当变量为空或未定义时出现的消息。尝试在调用 substr 之前添加console.log(line);。我也看不到它在您的示例中定义,但您可能只是错误地将其修剪掉。

【讨论】:

  • 很抱歉提供了这么少的信息 - 它来自一个大项目,我试图复制重要部分。尽管如此,菲利普你的想法是对的。非常感谢!问题如下:由于 IE8 没有为数组提供 .indexOf() ,所以我“手动”定义了它。现在,在使用 for in 遍历数组时也考虑到了这个函数。我添加了 if (typeof line !== "string") break; 现在它按预期工作。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2018-03-05
  • 2011-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-13
  • 1970-01-01
  • 2023-04-06
相关资源
最近更新 更多