0
<html>
<head>
    <title>testjson</title>
    <script type="text/javascript" src="jquery-1.7.2.min.js"></script>
    <script type="text/javascript">

var incidentReport1 = {
    "text1": "n/a",
    "text2": "n/a",
    "text3": "n/a",
    }

function readHtmlForInputs() {
    var count = 0; //Setting count to 0
    $('input').each(function(){
        var input = $(this);
        var temp = (input.attr('id'));

    if(input.attr('type') == 'button'){alert('button');}
    else{
            incidentReport1.temp = input.val();
            count++; //Incrementing counter     
        }
    });



    console.log("Input Types Found:" + count);

}

function saveChanges()
{
readHtmlForInputs();
console.dir(incidentReport1);
}
    </script>


</head>
<body>
<input type="button" value="save" onclick="saveChanges();"/>
<input type="text" name="Surname" id="text1" class="InputText" /><br>
<input type="text" name="Surname" id="text2" class="InputText"/><br>
<input type="text" name="Surname" id="text3" class="InputText"/><br>

</body>
</html>

上記のコード ブロックを取得しました。入力 ID を動的に取得し、ID を使用して incdientReport1 json に値を割り当てることができるようにしたいと考えています。私がこの問題を行うと、この行のようです...

var temp = (input.attr('id')); 

IDを割り当ててコンソールに表示すると正常に動作します

しかし、このコード行が

 incidentReport1.temp = input.val();

実行すると、temp の文字列値ではなく、temp という新しいフィールドに保存されます。

私はどこで間違っているのでしょうか?

4

1 に答える 1

4

あなたがしたい:

incidentReport1[temp] = input.val();

計算されたプロパティ名を使用する必要がある場合は、[ ]演算子を使用します。あれは、

object.propertyName

と同じです

object[ "propertyName" ]
于 2012-06-21T15:44:23.187 に答える