下拉列表的onchange事件与赋值的先后问题
我有个功能是下拉列表值改变的时候,去查出所选值的下级信息,类似级联显示的功能,
onchange事件是一个ajax请求struts2的action,选了之后会卡一阵子才会给这个<select>赋值,
这是为什么呢?
是不是险执行了onchange事件之后才给<select>赋所选择的项呢?
在线求答疑!
------解决方案--------------------
浏览器会在执行完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>