Javascript 下拉菜单currentIndex onchange
有一个包含5个选项的下拉列表。当前,选择了选项2。用户现在选择选项4。触发onchange事件,该事件被JS函数捕获,该函数在select上侦听onchange 在JS函数中,我可以使用selectedIndex属性轻松检查用户选择的选项的索引。但是,我也想知道用户更改它的原始值是什么 是否存在持续存在的属性 基本上是原始值,即。 在这种情况下,选择2Javascript 下拉菜单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
不,您需要将其保存在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();