通过每个li子输入查找值并增加一个

时间:2013-08-09 20:18:22

标签: javascript input

大师! 我有李的列表

<ul>
 <li><input type="hidden" value="7" name="order"></li>
 <li><input type="hidden" value="3" name="order"></li>
 <li><input type="hidden" value="6" name="order"></li>
 <li><input type="hidden" value="5" name="order"></li>
 <li><input type="hidden" value="1" name="order"></li>
 <li><input type="hidden" value="2" name="order"></li>
</ul>

我想在列表中添加一个隐藏输入的新​​li并设置输入值+ 1 - 通过查找所有输入的最大值来增加1。

你能帮助我吗?

4 个答案:

答案 0 :(得分:1)

请帮自己一个忙,并使用jQuery

var total;

$('li').find('input').each(function(){

   total = total == undefined || parseInt($(this).val()) > total ? parseInt($(this).val()) : total;

})

$('ul').append('<li><input type="hidden" value="' + (total + 1) + '" name="order"></li>');

total变量将填充输入值的总和。然后,您可以以任何您喜欢的方式使用它。

答案 1 :(得分:0)

function doSomething() {
    var list = document.getElementsByTagName("ul");
    var liTags = list[0].getElementsByTagName("li");
    var max = -1;
    for (var i = 0; i < liTags.length; i++) {
        var inp = liTags[i].getElementsByTagName("input");
        if (inp[0].value > max) {
            max = inp[0].value;
        }
    }
    var newLI = document.createElement("li");
    list[0].appendChild(newLI);
    newLI.innerHTML = '<input type="hidden" value="' + (parseInt(max,10) + 1) + '" name="order">';
    alert(list[0].innerHTML);
}
doSomething();

http://jsfiddle.net/KWuzu/embedded/

好的,一个jQuery解决方案:

var $inputs = $("ul>li>input");
var max = -1;
$inputs.each(function () {
    max = $(this).val() > max ? $(this).val() : max
});
var $list = $("ul:first");
$list.append('<li><input type="hidden" value="' + (parseInt(max, 10) + 1) + '" name="order"></li>');
alert($list.html());

http://jsfiddle.net/NbWqX/embedded

答案 2 :(得分:0)

在这里,你可以在没有jQuery的情况下进行DOM操作:

http://jsbin.com/uxowez/2

代码:

var inputs = document.getElementsByTagName('input'),
    ul = inputs[0].parentNode.parentNode,
    inputName = inputs[0].name,
    max = 0,
    newLi = document.createElement('li'),
    newInput = document.createElement('input'),
    newValue;

for (var i = 0, len = inputs.length; i < len; i++) {
    max = Math.max(max, inputs[i].value);
}

newInput.value = newValue;
newInput.name = inputName;
newLi.appendChild(newInput);
newLi.textContent = newValue;
ul.appendChild(newLi);

答案 3 :(得分:0)

var list = jQuery("ul li input").map(function(){
    return parseInt(jQuery(this).val(), 10);
    }).get();
var idNumber = Math.max.apply( Math, list );