无法将错误添加到数组中

时间:2013-09-29 23:46:26

标签: javascript html arrays

*编辑*问题在于我将变量定义为空变量(请参阅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) 谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

在您的filter中,如果值真实,则必须返回true,现在您为每个值返回true,甚至为空:

allInputs.filter(function(value){ return value; });

但这有点短:

allInputs.filter(Boolean);

请注意,它会删除任何虚假值,例如空字符串,零,null和任何强制转换为false的值。