0

こんにちはみんな私は私が困惑している簡単な問題があります。私は本当に何をするのかわかりません。そんな機能があります。

     function getThevalues(data) {
     for (var i = 1; i < data.d.length; i++) {

         MystartingLocation[i] = {}
         MystartingLocation[i]["locName"] = {}
         MystartingLocation[i]["locNode"] = {}

                var Opts  = document.createElement("option");
                var Opt = document.createElement("opo");
                MystartingLocation[i]["locNode"] = data.d[i].locNode;
                MystartingLocation[i]["locName"] = data.d[i].locName;
                Opts.text = data.d[i].locName;
                //Opt.text = data.d[i].locName;
                try {
                    document.getElementById("StartLocations").options.add(Opts);
                    document.getElementById("EndLocations").options.add(Opts);

                 }
       catch (e) {console.log(e);}


     }
 }

開始位置と終了位置の両方のドロップダウンリストに同じ値を入力しようとしていますが、試行するたびに、そのうちの1つだけが終了位置に入力されます。私は何を間違っているのですか?誰かが私を正しい方向に向けてくれませんか。ありがとうミゲル

4

3 に答える 3

3

ドキュメントの両方の場所に同じ要素を追加することはできません。

option2つの要素を作成するか、所有している要素のクローンを作成する必要があります。

document.getElementById("EndLocations").options.add(Opts.cloneNode(true));

2つのoption要素を使用すると、次のようになります。

 function getThevalues(data) {
     for (var i = 1; i < data.d.length; i++) {

         MystartingLocation[i] = {}
         MystartingLocation[i]["locName"] = {}

         var OptA = document.createElement("option");
         var OptB = document.createElement("option");

         MystartingLocation[i]["locNode"] = data.d[i].locNode;

         OptA.text = data.d[i].locName;
         OptB.text = data.d[i].locName;

         try {
             document.getElementById("StartLocations").options.add(OptA);
             document.getElementById("EndLocations").options.add(OptB);
         }
         catch (e) {console.log(e);} 
     }
 }
于 2012-11-22T07:21:54.283 に答える
3

あなたは同じ子供を連れて行き、それを動かしています。

document.getElementById("StartLocations").options.add(Opts);
document.getElementById("EndLocations").options.add(Opts);

Opts変数はに追加され、StartLocationsそこからプルされてに追加されEndLocationsます。

2行目をコメントアウトしてコードを実行すると、これが発生していることがわかります。

document.getElementById("StartLocations").options.add(Opts);
//document.getElementById("EndLocations").options.add(Opts);

<option>2つの異なる要素を作成し、それぞれを個別にアタッチする必要があります。


動作中:

function getThevalues(data) {
    var optStart;
    var optEnd;

    for (var i = 1; i < data.d.length; i++) {
        optStart = document.createElement("option");
        optEnd= document.createElement("option");

        optStart.text = data.d[i].locName;
        optEnd.text = data.d[i].locName;

        document.getElementById("StartLocations").options.add(Opts);
        document.getElementById("EndLocations").options.add(Opts);
    }
}
于 2012-11-22T07:21:57.310 に答える
0

線の必要はありません

MystartingLocation[i]["locName"] = {}
MystartingLocation[i]["locNode"] = {}

オブジェクトをオブジェクト内にネストするためです

于 2012-11-22T07:23:06.007 に答える