在JavaScript中生成下拉列表(未知错误)

时间:2016-03-25 10:44:56

标签: javascript

每当用户更改 List1 (selQueryType)中的选择时,我想重新生成 List2 (selSortt)。在原始状态下, List2 空白。两个列表都是较大的HTML输入文档的一部分。 List1 有4个选项,因此最终会有4个ifs - 实际上是switch列表2 是从预定义的数组( listvalues )生成的,而不是来自 List1 (请参阅代码)。

Function QueryTypeChg() List1触发了

onchange - 我检查了一个警告,它被解雇了。在尝试生成List2的新选项时,问题似乎出现在for周期中。 没有添加选项到List2 - 它原来是空白的。

function QueryTypeChg()
{
var selIndex = document.getElementById("selQueryType").selectedIndex;

var objSel = document.getElementById("selSortt");
var i = 0;

while (objSel.length > 0)
   {
   objSel.remove(0);
   }

if (selIndex == 0)
   {
   var listvalues = ["Species", "Region, area", "Anthesis", "Vulnerability"];

   for (i = 0; i < options.length; i++) 
       {
       var option = document.createElement("option");
       option.text = listvalues[i];
       option.value = i;       
//       alert("option.text is " + option.text);
       objSel.add(option);
       }​
   }


}

3 个答案:

答案 0 :(得分:1)

因为你做removing the element

while (objSel.length > 0)
{
  objSel.remove(0);
}

如果要清除选择,则只需用

替换此while循环
objSel.innerHTML = "";

完整的代码应该是

function QueryTypeChg()
{
  document.getElementById("selSortt").innerHTML = document.getElementById("selQueryType").innerHTML 
  document.getElementById("selSortt").selectedIndex = document.getElementById("selQueryType").selectedIndex;
}

答案 1 :(得分:0)

您使用选项变量而不是 listvalues 请更改以下可能对您有帮助的代码

curl -XPUT 'http://localhost:9200/myindex/_mapping/external' -d '
{
    "external" : {
        "properties" : {
            "id": {"type":"string"},
            "name": {"type":"string"},
            "description": {"type":"string"},
            "source": {"type":"string"},
            "topic":{"type":"string"}  //  <---new field
        }
    }
}'

 for (i = 0; i < options.length; i++) 

答案 2 :(得分:0)

我&#34;钉牢&#34;它使用以下代码:

function QueryTypeChg()
{
var selIndex = document.getElementById("listQueryType").selectedIndex;
localStorage.setItem("QueryType", selIndex);

if (selIndex == 0)
   {
   var listvalues = ["Species", "Region, area", "Anthesis", "Vulnerability"];
   var str_options = '';

   for (var i=0; i < listvalues.length; i++)
       {
       str_options += "<option value='" + [i] + "'>" + listvalues[i] + "</option> \r\n";
       }

   $("#listSort").html("");
   $("#listSort").append(str_options);
   return;
   }

}

我仍然不知道为什么它不能使用初始代码。它可以在W3Schools试试窗口和其他我见过的例子中工作。还有一个特点是它使用html()方法,而不是innerHTML属性。这个JavaScript究竟是什么样的多种语言?在Pascal中,只有一种方法可以做某件事!