【发布时间】: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