我有字符串。然后我将字符串拆分成一个数组。
我使用.each()
希望逐个迭代数组并产生一定的输出。
但是,当我尝试这样做时,我只获得输出数组中的值。
怎么来的?
我已经设置了一个jsfiddle来展示我到目前为止所尝试的内容以及我得到的结果:
var string = 'this is a string';
stringArray = string.split('');
$.each(stringArray, function(index, value){
$('#output').text(index + ' : ' + value);
});
我正在努力实现这一点,用户输入文本,点击提交并返回输入,但每次点击提交时都会替换当前输出。
答案 0 :(得分:6)
请参阅此处 http://jsfiddle.net/S7Z6K/4/ 或 http://jsfiddle.net/S7Z6K/6/
您正在使用.text
在代码中,您可以看到我将旧结果集附加到新结果集,因此一切正常。
希望这有帮助!
<强>码强>
var string = 'this is a string';
stringArray = string.split('');
var hulkfoo = "";
$.each(stringArray, function(index, value){
hulkfoo += index + ' : ' + value + " -- ";
$('#output').text(hulkfoo);
});
答案 1 :(得分:4)
您正在重复地将输出元素的值设置为每个连续的数组值,并且您将看到的唯一值是设置的最后一个值,这确实是您的jsFiddle显示的值。
.text()
用新内容替换当前内容。它不会向已经存在的内容添加内容。
如果你描述了你想要解决的实际问题,我们可以更好地建议使用什么代码。我怀疑你真的想要使用.append()
,因为将一个字符串拆分成它的碎片是愚蠢的,然后再一次将它们全部追加到一个字符。你必须要做一些比这更有趣的事情。
答案 2 :(得分:3)
您在此处所做的只是在每次迭代时覆盖.text()
的{{1}}值。
您应该尝试使用#output
功能。
.append()
或者,为了解释起见,你也可以这样做 -
$.each(stringArray, function(index, value){
$('#output').append(index + ' : ' + value);
});
答案 3 :(得分:3)
试试这个......
var string = 'this is a string',
stringArray = string.split('');
$.each(stringArray, function(index, value){
$('#output').append(index + ' : ' + value);
});
答案 4 :(得分:2)
您不断更新#output,唯一保留的是上次迭代中的val。
尝试.append()而不是文字 更新的演示:http://jsfiddle.net/epinapala/S7Z6K/5/
var string = 'this is a string';
stringArray = string.split('');
alert(stringArray);
$.each(stringArray, function(index, value){
$('#output').append(index + ' : ' + value);
});
答案 5 :(得分:2)
这是因为text()
函数将在每次调用元素时替换元素的内部文本。你可以简单地用append()
替换文字,以便附加文字,但这不会被格式化。
如果你想格式化你的输出你可以做这样的事情; http://jsfiddle.net/S7Z6K/8/
var string= 'this is a string';
stringArray = string.split('');
$.each(stringArray, function(index, value){
var div = $('<div></div>').text(index + ' : ' + value)
$('#output').append(div);
});
要清除输出并在每次按下按钮时更新,以便每次单击提交时都会替换当前输出,您可以执行以下操作; http://jsfiddle.net/S7Z6K/15/
$('#submit').click(function(){
var value = $('#value').val();
var array = value.split('');
var output = $('#output');
output.empty();
$.each(array, function(index, value){
output.append('<div>' + index + ' : ' + value + '</div>');
});
});
答案 6 :(得分:2)
var string = 'this is a string';
stringArray = string.split(/\s/);
$.each(stringArray, function(index, value){
$('#output').text(function(i, oldText) {
return oldText += index + ' : ' + value;
});
});
<强> DEMO 强>
答案 7 :(得分:-1)
text()
函数不会将文字附加到output
,因此您看到的是上次替换的结果