0

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

4

1 回答 1

1

如果值是真实的,你必须filter返回true,现在你要返回true每个值,甚至是空值:

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

但这有点短:

allInputs.filter(Boolean);

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

于 2013-09-29T23:49:23.190 回答