*编辑*问题在于我将变量定义为空变量(请参阅getElementByXpath区域)请帮助解决此问题*编辑*
我有一个代码,其中为计算器收集了许多输入框的值。输入框的数量由用户在createCalcutalor()函数中决定。输入框值收集用户定义的getElementByXpath()函数(用作var)。然后将值放入数组中。
var getElementByXpath = function (path) {
return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
};
由于我创建文本框的方式,这是必需的。
这就是问题所在。如果文本框为空,则该值产生错误,未放入数组,然后清除(请参阅下面的代码)。它反而产生错误,并且不允许执行任何更多的javascript。
守则:
function grabInputNumbers() {
var inputOne = getElementByXpath("//html/body/div/div[2]/div/div/div/div/input[1]").value;
var inputTwo = getElementByXpath("//html/body/div/div[2]/div/div/div/div/input[2]").value;
var inputThree = getElementByXpath("//html/body/div/div[2]/div/div/div/div/input[3]").value;
var inputFour = getElementByXpath("//html/body/div/div[2]/div/div/div/div/input[4]").value;
var inputFive = getElementByXpath("//html/body/div/div[2]/div/div/div/div/input[5]").value;
var allInputs = [inputOne, inputTwo, inputThree, inputFour, inputFive];
allInputs = allInputs.filter(function() { return true; });
alert(allInputs);
}
我是javascript的虚拟婴儿(一个月前我开始使用HTML / CSS / Javascript),如果这是一个愚蠢的问题,我真的很抱歉。任何有目的或执行的问题都可以通过查看网站来解答(下载代码:http://www.mediafire.com/download/ftajp5r8uhp5yy7/marshallRogers.zip) 谢谢你的时间。
答案 0 :(得分:1)
在您的filter
中,如果值真实,则必须返回true
,现在您为每个值返回true
,甚至为空:
allInputs.filter(function(value){ return value; });
但这有点短:
allInputs.filter(Boolean);
请注意,它会删除任何虚假值,例如空字符串,零,null和任何强制转换为false的值。