0

これは私が取り組んでいる本当に単純なものからの抜粋です(残念ながら、私はJavascriptの経験があまりありません)。基本的に、複数の動的テキストフィールドの値を順番に出力する必要があります(動的が正しい単語であると想定しています。必要な数に応じて、テキストボックスを追加または削除できます)。それらは次のようにラベル付けされています:

<li><input type="text" name="feature_1" id="feature_1" /></li>
<li><input type="text" name="feature_2" id="feature_2" /></li>
etc
etc

私はこれを使用して、テキストボックスから入力値を取得しようとしています。

amount = 4; //this is actually the total number of text boxes used
var count = 1;
while (count <= amount) {
        var feature_text = "form.feature_" + count + ".value";
        text += ("<li>" + feature_text + "</li>\n");
        count++;
    }

残念ながら、この出力

<li>form.feature_1.value</li>
<li>form.feature_2.value</li>
<li>form.feature_3.value</li>
<li>form.feature_4.value</li>

それ以外の

<li>Value 1</li>
<li>Value 2</li>
<li>Value 3</li>
<li>Value 4</li>

文字列を出力する代わりに「feature_text」に値をプルさせるにはどうすればよいですか?

4

4 に答える 4

0

あなたはこのようなことをする必要があります:

text = document.getElementById("form.feature_" + count).value;
于 2012-07-10T21:34:53.523 に答える
0
document.getElementById("theButton")

amount = 4; //this is actually the total number of text boxes used
var count = 1;
while (count <= amount) {
        var feature_text = "form.feature_" + count;
        text += ("<li>" + document.getElementById(feature_text).value + "</li>\n");
        count++;
    }
于 2012-07-10T21:36:26.983 に答える
0

これを試してみてください

var feature_text = document.getElementById("feature_" + count).value;
于 2012-07-10T21:36:47.253 に答える
0

実際の値の代わりに文字列を取得しています。これは、現在作成しているものであるためです。

var feature_text = "form.feature_" + count + ".value";

テキストを引用符 [""] で囲むと、DOM 要素を参照する代わりに文字列値が作成されます。

可能であれば、実際の ID で要素を参照してください。

var feature_text = document.getElementById('feature_' + count).value;

コードを関数に移動し、onclick イベント ハンドラーを使用して実行する、より完全な例:

HTML:

<ul>
    <li><input type="text" name="feature_1" id="feature_1" /></li> 
    <li><input type="text" name="feature_2" id="feature_2" /></li>
</ul>
<input type="button" value="Submit" onclick="getValues()" />

<div id="output"></div>

JavaScript:

function getValues(){     
    var amount = 2; 
    var count = 1; 
    var text = ['<ul>'];

    for(var i=1; i <= amount; i++) {
        var ele = document.getElementById("feature_" + i);
        text[i] = "<li>" + ele.value + "</li>";
    }
    text.push('</ul>');

    document.getElementById('output').innerHTML = text.join('');
}

for ループを使用するように while ループを変更し、text最適化を強化するために変数を配列に切り替えました。

値を取得するだけなので、要素を変数にまったく割り当てないことで、さらに圧縮できます。

text[i] = "<li>" + document.getElementById("feature_" + i).value + "</li>";

デモ: http://jsfiddle.net/ACVFq/

于 2012-07-10T21:39:22.030 に答える