jQuery在html输入上使用每个函数

时间:2011-10-19 22:42:45

标签: jquery

您好我已经尝试编写JavaScript(jQuery)函数来合并输入类型文本中的值。

我的代码

$('#addpoll').click(function () {
    var answers = $('#answertable').find('input[type=text]');
    var answersStream = '';

    $.each(answers, function(index, value) {
        answersStream=answersStream.val()+value+'#';
    });

    alert(answersStream);
});

所以有html代码

<table id="answertable">
    <tr><td>1]</td><td><input type="text" name="answer1" id="answer1" style="width:300px" /></td></tr>
    <tr><td>2]</td><td><input type="text" name="answer2" id="answer2" style="width:300px" /></td></tr>
</table>

答案由jQuery动态添加,因此可以通过N个答案

我想在变量answersStream中输出: YES#NO#取消定义

但是每个功能都不起作用。函数遍历对象,但它无法接收值。

4 个答案:

答案 0 :(得分:4)

您可以使用.map() [docs]创建值数组,然后使用join [docs]

var answersStream = $('#answertable input[type="text"]').map(function() {
     return this.value;
}).get().join('#');

答案 1 :(得分:3)

answersStream是一个字符串变量,但你试图像jQuery对象一样使用它(通过调用val())。应该这么简单:

answersStream += value.val() + '#';

value参数将是jQuery对象,因此您应该在其上调用val()

答案 2 :(得分:2)

$('#addpoll').click(function () 
{
     var answers = $('#answertable').find('input[type=text]');
     var answerStream = []; //use an array for string concatenation

     answers.each(function() 
     {
         answerStream.push($(this).val());
         answerStream.push('#');
     });
     var result = answerStream.join('');
     result = result.substring(0. result.length - 2); //trim trailing # symbol
});

编辑:这个each()函数比你自己访问元素要慢得多:

$('#addpoll').click(function () 
{
     var answers = $('#answertable').find('input[type=text]');
     var answerStream = []; //use an array for string concatenation

     for(var i = 0; i < answers[0].length; i++)
     {
         answerStream.push($(answers[i]).val());
         answerStream.push('#');
     });
     var result = answerStream.join('');
     result = result.substring(0. result.length - 2); //trim trailing # symbol
});

答案 3 :(得分:0)

var answerStream = new array();
$('#addpoll').click(function () {
    $("#answertable input[type='text']").each(function(){
       var a=$(this).val()+"#";
       answerStream.push(a);                                                        
    });
});

创建一个名为answer steam的ARRAY。将结果推送给它。不确定你想要完成什么但应该工作