日期:2014-05-16  浏览次数:20397 次

下拉列表的onchange事件与赋值的先后问题
我有个功能是下拉列表值改变的时候,去查出所选值的下级信息,类似级联显示的功能,
onchange事件是一个ajax请求struts2的action,选了之后会卡一阵子才会给这个<select>赋值,
这是为什么呢?

是不是险执行了onchange事件之后才给<select>赋所选择的项呢?

在线求答疑!

------解决方案--------------------
引用:
Quote: 引用:

我希望的是选择之后直接就赋值了,而不是卡一会儿才把值赋上去

把你的 onchange里面的代码 放在  setTimeout里面


浏览器会在执行完onchange的js后再更新dom节点,如果你发现select会卡一下,估计是你的onchange的js执行时间太长,可以从两方面去考虑问题所在:
1.你的ajax请求是否设为同步了?如果同步的话请改成异步。
2.你在ajax请求前是否做了其他比较重载的js操作,如果有请考虑如何提高这个操作的性能。
如果这两方面你确认都无法改进,把你的onchange的代码放到setTimeout里,能够满足你立刻先把值赋给下拉框的需求,如

<select name="sel" onchange=setTimeout(runLongOperation,20);>
   <option value="1">One</option>
   <option value="2">Two</option>
</select>