我试图循环一种输入形式并将所有输入值推送到一个数组,以便稍后在我的代码中进行一些操作。另一方面,当我遍历每个输入时,我想检查所选输入是否为空,如果它是空的我想将其值设置为" - "。这是我到目前为止所拥有的 -
当我运行并测试此代码时,不输出正确的值。我错过了什么?
$('.NewTeam').eq(i).find('tr').each(function(event) {
//each row is one player
var Player = []; //A new array for every player
TeamInfo = TeamInfo + "\n Player " + counter + "\n";
$(this).find(":input").each(function() {
if ($(this).value == "") {
$(this).val("--");
TeamInfo = TeamInfo + this.value + " , " + " ";
Player.push(this.value);
}
TeamInfo = TeamInfo + this.value + " , " + " ";
Player.push(this.value);
});
counter++;
TeamArray.push(Player);
});
答案 0 :(得分:1)
两个问题:
您应该写this.value
或$(this).val()
,而不是$(this).value
。
所以这个
if ($(this).value == ""){
应该成为:
if ($(this).val() === ""){
您正在if
区域内执行此操作:
TeamInfo = TeamInfo + this.value + " , " + " ";
Player.push(this.value);
因此,如果if
条件为真,则会发生两次。所以最好不要在if
块中进行。
在将元素推送到TeamArray
数组时递增计数器。如果您希望计数器计算数组中元素的数量,您可以保存一行(和变量),因为TeamArray.length
已经可以使用它。
答案 1 :(得分:1)
我认为你正在混淆价值的使用。 $(this).value
不是有效的财产。 jQuery有一个返回val()
的方法this.value
。因此,您需要始终如一地致电$(this).val()
。下面我删除了if
语句并实例化了一个名为value
的tmp变量。我分配它的方式是var value = $(this).val() || "--";
这就是说make值等于这个节点的值,除非它是假的,然后将它设置为"--"
。我还删除了字符串中的一些不必要的连接。
$('.NewTeam').eq(i).find('tr').each(function (event) { //each row is one player
var Player = []; //A new array for every player
TeamInfo = TeamInfo +"\n Player " + counter + "\n";
$(this).find(":input").each(function(){
var value = $(this).val() || "--";
TeamInfo = TeamInfo + value + " , ";
Player.push(this.value);
});
counter++;
TeamArray.push(Player);
});
如果您有任何其他问题,请告诉我