【问题标题】:jQuery error in IE8 - .val() or trim()?IE8 中的 jQuery 错误 - .val() 或 trim()?
【发布时间】:2023-04-06 11:23:01
【问题描述】:

我在 IE8 调试器中遇到 jquery 错误,但我不确定是哪个函数导致它。我在这里看到一大堆帖子说 IE8 不支持原生 trim(),但我没有(我不认为)使用原生版本(我继承了这段代码;这不是我写的从头开始。)

这是导致问题的块 - 它是点击功能的一部分:

greenlight = false;
link = $(this);
href = $(this).attr("href");
row = $(this).parent().parent();
if ($(":text", row).exists()) {
    new_email = jQuery.trim($(":text", row).val());
        //do stuff here

}

我在调试器中遇到的错误是在从 new_email 开始的那一行;错误是“对象不支持此属性或方法。”

谁能帮我弄清楚 1) IE8 不支持哪些属性或方法,以及 2) 我可以做些什么来修复它?我绝不是 jquery 专家。我是 99% 的服务器端。

该代码在 Chrome、Safari 和 Firefox 中运行。

【问题讨论】:

  • 如果您可以在可公开访问的页面或jsfiddle.net 上重现问题,我们会更轻松地为您提供帮助。此外,IE JavaScript 错误中的行号通常会产生误导,请尝试使用 IE Developer Tools 调试器运行代码并设置断点。
  • 我确实使用开发人员工具运行了代码并设置了几个断点 - 一个在错误中引用的那个之前的行上,另一个在它之后的行上。它通过了第一个,并在第二个之前爆炸。而且我总体上理解对代码的需求,但这是一个巨大的 Drupal 站点的一部分,到处都是零碎的代码。没有简单的方法可以吸收任何可能影响事物的东西。

标签: jquery internet-explorer-8


【解决方案1】:

更新: 由于新信息,我认为您遇到了 IE 的问题,当您有一个变量和一个 ID 具有相同名称的元素时,它会发生冲突,这将导致冲突和令人困惑的关于功能不存在的错误消息。有关更详细的说明,请参阅此参考。 http://www.karlstanley.net/blog/?p=5

原答案: 如果您在调试单个复杂行时遇到问题,将其拆分为多个部分,

var tempValue = $(":text", row).val();
new_email = jQuery.trim(tempValue);

【讨论】:

  • 好的,我试过了,用console.log打印出tempValue的值。它显示了预期的内容。但是,我仍然在下一行收到错误。有趣的是,它说错误出现在字符 4 上,即下划线。 IE 真的会在变量名中出现下划线吗?
  • 显然是这样的;我刚刚将变量名从 new_email 更改为 newEmail,它工作正常。我有点吓坏了,因为这个应用程序中有几十个函数包含名称中带有下划线的变量。
  • 会不会是你在 IE 中遇到了 dom 元素和 javascript 变量之间的命名冲突? karlstanley.net/blog/?p=5
  • @Robert - 是的!!!而已!非常感谢——我知道我没有疯。正如我所说,我继承了这段代码,并且有一些我不熟悉的部分,并且确实有一个字段,隐藏在一个巨大的表单中,名为 new_email。
  • @Robert,如果您想发表该评论作为答案,我可以接受,以便您获得信用...
【解决方案2】:

变化:

$(":text", row).exists()

收件人:

$(":text", row).length > 0

据我所知,jQuery 库中没有 exists() 函数 (tried searching the API reference)。

【讨论】:

  • 我会试一试,但如果是这样,为什么它可以在其他浏览器上运行?
  • 嗯,我的思路是对象或数组原型定义了exists函数,而IE没有实现它,这是完全错误的,并非如此。其余代码看起来不错,这是唯一有问题的部分,我无法解释为什么它在 FF 中有效,因为 typeof $(':text').exists 返回 'undefined'
  • 不,我尝试了您的更改,但在同一行仍然出现相同的错误。所以导致问题的不是exists()(或不仅如此。)
  • exists() 绝对不是 jQuery 中的方法。即使这不能解决问题,也要保留更改!
猜你喜欢
  • 2011-03-27
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多