从DOM获取.append值

时间:2013-04-02 20:56:17

标签: javascript jquery

在下面的函数中,我找到了ID的最大计数,然后添加1.一切正常,除了没有看到添加到DOM的新值,因此它们在调用函数时不会递增时间。

我没有正确地将新值添加到DOM中吗?

function addEdu(){
    var currentCount = $('input.uniqueId').val();
    currentCount = Math.max(currentCount);
    var nextCount = parseInt(currentCount) + 1;
    var newEdu = "<input type='hidden' name='fieldId[]' value='" + nextCount + "' class='uniqueId' /><p class='dual'><input type='text' name='educationTitle[]' "; //Shortened for clarity
    $("#eduHistory").append(newEdu); 
    $( ".datepicker" ).datepicker();
}

2 个答案:

答案 0 :(得分:2)

$('input.uniqueId').val()会为您提供类uniqueId的第一个输入值。如果您只希望有一个这样的输入,只需更改输入的值。否则,您可能必须选择最后一个输入$('input.uniqueId:last').val()

Math.max也有两个参数,它的目的是什么?

答案 1 :(得分:1)

您尝试确定下一个.uniqueId的方式是错误的。
首先,$("input.uniqueId").val()将为您提供选择中第一个元素的值 第二个问题是Math.max(currentCount),它将始终返回currentCount的值,正如已经提到的那样,它是第一个元素的值。

这应该按预期工作:

// get an array with all uniqueIds
var currentIds = $("input.uniqueId").map(function() {
    return parseInt($(this).val(), 10);
});

// determine the biggest uniqueId
var currentCount = Math.max.apply(Math, currentIds);

// next uniqueId (if there is no "input.uniqueId" then currentCount will be -Infinity)
var nextCount = (currentCount === -Infinity ? 0 : currentCount) + 1;

// ...