【问题标题】:How can the html tag ID be undefined in this jsfiddle?在这个jsfiddle中如何未定义html标签ID?
【发布时间】:2016-07-11 17:33:31
【问题描述】:

我有一个 Phonegap 应用程序,它使用一些标准的 HTML 和 JQuery 向用户显示数据。在三星 Galaxy Camera 2 上进行测试时,我们偶尔会收到变量“未定义”的错误。

这似乎不可能,因为该变量是根据它认为未定义的内容创建的。

我在 fld[0].id 上收到错误:

无法调用未定义的方法“indexOf”。

关于 jsfiddle 的完整示例:https://jsfiddle.net/8lug/fu2v62fh/ 部分示例javascript:

var fld = $('#thisdiv').find('[id^=fld-One]');

if (fld.length > 0 && fld[0].id.indexOf('#')) {
    $('#fld-Result').text("Success");
}

这个 indexOf 怎么可能会中断?

编辑: 有人可以在 IF 语句中提供保护这种情况的编辑吗?

【问题讨论】:

  • 这个脚本在哪里包装?据我所知,它必须是未定义的唯一机会是元素 fld-One 不存在(或尚未)存在。
  • @briosheje 然后fld.length > 0 将是假的,.indexOf() 根本不会被调用
  • @Andreas:确实很聪明。那么它真的可能与浏览器的版本/浏览器本身有关吗?我不认为真的有任何其他可能的原因。
  • 但可能 fd 是一个数组,但它的第一个元素没有属性 id,这种访问 id 的方式好吗?
  • 这行代码到现在已经被使用了一百万次了。所以它通常有效。 fld 被定义为带有“id”的事物数组。索引“0”零可以不存在吗?也许我应该试试 jquery .first()?

标签: javascript android jquery html cordova


【解决方案1】:

我发布了应避免这种情况的制衡。如果有人能给出更好的语法,那会很好看。

var fld = $('#thisdiv').find('[id^=fld-One]');

if (fld.length > 0
  && fld[0] !== undefined
  && fld[0].id !== undefined
  && fld[0].id.indexOf('#')) {
    $('#fld-Result').text("Success");
}

在尝试引用之前,基本上要确保对象和属性都存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2021-10-15
    • 2017-11-15
    • 2016-02-19
    • 2022-09-27
    相关资源
    最近更新 更多