我真的不知道这里的问题是什么。据我所知,代码很简单,应该可以正常工作。
var Prices="";
for (var PriceCount = 1; PriceCount <= 120; PriceCount++) {
var CurrentPrice = "Price" + PriceCount;
if (prevDoc.getElementById(CurrentPrice).value != null) {
if (Prices == "") {
Prices = prevDoc.getElementById(CurrentPrice).value;
} else {
Prices += "," + prevDoc.getElementById(CurrentPrice).value;
}
} else {
break;
}
}
表单上最多可以有120个隐藏输入。当我们检查不存在的输入时,循环应该中断。我的测试页面有两个被拉动的输入元素。在第三个(null)我在firebug中得到这个错误:
prevDoc.getElementById(CurrentPrice) is null
if (prevDoc.getElementById(CurrentPrice).value != null) {
是的,它是空的...那是对ಠ_ಠ
的检查有人知道我做错了什么吗?这似乎应该是非常直接的。
编辑: 为了清楚起见,prevDoc = window.opener.document
答案 0 :(得分:5)
if (prevDoc.getElementById(CurrentPrice).value != null) {
可以扩展为:
var element = prevDoc.getElementById(CurrentPrice);
var value = element.value; /* element is null, but you're accessing .value */
if (value != null) {
答案 1 :(得分:1)
值永远不会为空。
如果未填写,则值为“”或长度为零。
如果元素不存在,则检查是否存在元素。
var CurrentPrice = "Price" + PriceCount;
var elem = prevDoc.getElementById(CurrentPrice);
if (elem && elem.value != null) {
答案 2 :(得分:0)
尝试
if (prevDoc.getElementById(CurrentPrice) !== null)
答案 3 :(得分:0)
我认为应该是:
var Prices="";
for (var PriceCount = 1; PriceCount <= 120; PriceCount++) {
var CurrentPriceId = "Price" + PriceCount,
CurrentPrice = prevDoc.getElementById(CurrentPriceId);
if (CurrentPrice != null) {
Prices = (Prices == "") ? CurrentPrice.value : (Prices + "," + CurrentPrice.value);
}
else break;
}