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);}


     }
 }

我正在尝试用相同的值填充起始位置和结束位置下拉列表,但我尝试的每次尝试只填充其中一个结束位置。我在做什么错?有人可以指出我正确的方向。谢谢米格尔

4

3 回答 3

3

您不能将相同的元素添加到文档中的两个位置。

您需要创建两个option元素或克隆您拥有的元素。

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

使用两个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.

如果您注释掉第二行并运行您的代码,您会看到这种情况:

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

您需要创建两个不同的<option>元素,并分别附加每个元素。


在行动:

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 回答