您好我已经尝试编写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#取消定义
但是每个功能都不起作用。函数遍历对象,但它无法接收值。
答案 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。将结果推送给它。不确定你想要完成什么但应该工作