Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉菜单currentIndex onchange_Javascript_Html_Html Select - Fatal编程技术网

Javascript 下拉菜单currentIndex onchange

Javascript 下拉菜单currentIndex onchange,javascript,html,html-select,Javascript,Html,Html Select,有一个包含5个选项的下拉列表。当前,选择了选项2。用户现在选择选项4。触发onchange事件,该事件被JS函数捕获,该函数在select上侦听onchange 在JS函数中,我可以使用selectedIndex属性轻松检查用户选择的选项的索引。但是,我也想知道用户更改它的原始值是什么 是否存在持续存在的属性 基本上是原始值,即。 在这种情况下,选择2 不,您需要将其保存在js变量中。正如我提出的以下概念一样,可能有更好的方法来实现这一点: var vals = []; document.ge

有一个包含5个选项的下拉列表。当前,选择了选项2。用户现在选择选项4。触发onchange事件,该事件被JS函数捕获,该函数在select上侦听onchange

在JS函数中,我可以使用selectedIndex属性轻松检查用户选择的选项的索引。但是,我也想知道用户更改它的原始值是什么

是否存在持续存在的属性 基本上是原始值,即。 在这种情况下,选择2


不,您需要将其保存在js变量中。

正如我提出的以下概念一样,可能有更好的方法来实现这一点:

var vals = [];

document.getElementById("colors").onchange = function(){
   vals.unshift(this.selectedIndex);
};

function getPrevious(){
  alert(vals[1]); // you'll need more logic here
                  // this is purposefully simplistic
}
-


正如dl所说,您可以使用简单的隐藏变量来保存该值。我们可以在隐藏变量中设置当前值


+1:好主意。可以使用对象而不是数组来处理多个select元素。类似VAL={select:[],select2:[]}.++1。假设它们并不总是某个已知的默认值,则需要在页面加载时使用初始值对VAL进行种子设定。您可以简单地将其存储为SELECT标记本身上的expando,而不是用JS变量来存储它们或它们的散列。onchange处理程序本质上是相同的,尽管用户第一次更改标量字符串时可能需要将其转换为数组,但这为您提供了一个方便的位置来压缩旧值,而不会弄乱全局名称空间,并提供了一种记录初始选定索引的简单方法,有些人确实对expandos有审美上的问题,但是如果按照DOM标准保持它们的小写,那么在任何浏览器中使用它们都不会有问题。
<select id="colors">
   <option>Red</option>
   <option>Green</option>
   <option>Blue</option>
</select>
   var colors = document.getElementById("colors");
       colors.vals = [];
       colors.setPrevious = function() { this.vals.unshift(this.selectedIndex); }
       colors.getPrevious = function() { return this.vals[1]; }
       colors.onchange    = function() { this.setPrevious(); this.getPrevious(); }
       // set initial state
       colors.setPrevious();