3

文字列があります。次に、文字列を分割して配列を作成します。

.each()うまくいけば、配列を1つずつ繰り返して、特定の出力を生成するために使用します。

ただし、これを実行しようとすると、出力された配列の値しか取得できません。

どうして?

これまでに試したことと、得られた結果を示すためにjsfiddleを設定しました。

http://jsfiddle.net/S7Z6K/2/

var string = 'this is a string';
stringArray = string.split('');

$.each(stringArray, function(index, value){
    $('#output').text(index + ' : ' + value);
});​

ユーザーがテキストを入力し、[送信]をクリックすると、そこに入力が返されますが、[送信]をクリックするたびに、現在の出力が置き換えられます。

4

8 に答える 8

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);
    });​
于 2012-06-20T08:33:07.193 に答える
4

出力要素の値を連続する各配列値に繰り返し設定しており、表示されるのは最後に設定された値だけであり、これは実際にjsFiddleが表示するものです。

.text()現在のコンテンツを新しいコンテンツに置き換えます。すでに存在するものにコンテンツを追加することはありません。

解決しようとしている実際の問題を説明した場合は、使用するコードをより適切にアドバイスできます。.append()文字列を分割して、一度に1文字ずつ追加するのはばかげているので、本当に使用したいとは思わない。あなたはそれよりももっと面白いことをしたいと思っているに違いありません。

于 2012-06-20T08:32:45.863 に答える
3

ここで行っているのは、反復ごとにの.text()値を単純にオーバーライドすることです。#output

この関数を使ってみてください.append()

$.each(stringArray, function(index, value){
    $('#output').append(index + ' : ' + value);
});​

あるいは、説明のために、次のようなこともできます-

var element = $('#output') // use cache to improve performance
element.text( element.text() + index + ' : ' + value);
于 2012-06-20T08:32:53.343 に答える
3

これを試して....

var string = 'this is a string',
    stringArray = string.split('');

$.each(stringArray, function(index, value){
    $('#output').append(index + ' : ' + value);
});​
于 2012-06-20T08:33:20.907 に答える
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);
    });​
于 2012-06-20T08:32:58.810 に答える
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>');
    });
});
于 2012-06-20T08:33:58.987 に答える
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;
        });
    });

デモ

于 2012-06-20T08:41:16.250 に答える
-1

text()関数はにテキストを追加しないoutputので、表示されるのは最後の置換の結果です

于 2012-06-20T08:35:45.687 に答える