Javascript 从onchange事件内部更改所选项目
在以下选择框中:Javascript 从onchange事件内部更改所选项目,javascript,jquery,html,Javascript,Jquery,Html,在以下选择框中: var sval=1; function foo(v) { sval=Number(v); } ... <select name="sval" onchange=" if (confirm('...?')) foo(this.value); else $(this).val(sval);"> <option value="1">1 <option value="2">2 <option value="3">
var sval=1;
function foo(v) {
sval=Number(v);
}
...
<select name="sval" onchange="
if (confirm('...?')) foo(this.value); else $(this).val(sval);">
<option value="1">1
<option value="2">2
<option value="3">3
但是不清楚内联代码$(this.val(sval)
将select重置为1的原因是什么
我认为其他部分是不必要的 改为
<select name="sval" onchange="
if (confirm('...?')) foo(this.value);">
你的方法太可怕了 当您在元素上内联JavaScript事件时,它看起来很难看 为什么要将“选择”值设置为当前选定值的值 你能跳过这个
$(this.val(sval=this.value;)代码>且仅具有此sval=this.value代码>
我只是一个超级粉丝,在不需要变量和代码的情况下,将代码和值保持在最低限度
试试看
<script type="text/javascript">
var sval = 1;
var foo = function () {
if(confirm('...?')) {
$(this).val(sval = this.value);
}
else
{
$(this).val(sval);
}
};
setTimeout(function () {
document.getElementById('sval').onchange = foo;
}, 100);
</script>
<select id="sval">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
var-sval=1;
var foo=函数(){
如果(确认(“…?”){
$(this.val)(sval=this.value);
}
其他的
{
$(this).val(sval);
}
};
setTimeout(函数(){
document.getElementById('sval').onchange=foo;
}, 100);
1.
2.
3.
我修改了您的代码,我就是这样做的
工作:
Javascript:
$( "#svalue" ).change(function() {
if (confirm('...?')) {
vals =$('#svalue').val();
$('#svalue').val(this.options[this.selectedIndex].value);
}else{
$('#svalue').val(vals);
}
});
var sval=1;
function foo(v) {
$('#svalue').val(v);
}
HTML:
<select id="svalue">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
显然,您忘记将sval
的值更改为用户以前单击过的值。代码是sval=(this.value)代码>在onchange
部分。我找到了代码不起作用的原因
结果表明,在小提琴和浏览器中的执行存在差异,这使得跟踪问题变得更加困难
在onchange事件的内联代码中,定义了一个与name=“sval”
同名的变量,由于该名称与全局上下文中的整型变量相同,因此代码没有使用正确的值来更改select的值。$(this).val()
不会更改所选项目;如果未确认,则重新选择旧值。确认更改为3后,sval的值变为3,然后更改为2并单击“确认”对话框上的“否”应返回到3,并返回到1…否则零件不存在neccessary@bbonevdude我更新了我的答案,请检查。最初变量sval=1,所选项目为1;将选择项更改为2后,如果确认,则两者都应更改;之后,如果选择了3但未确认,则变量和所选项目都应返回到2.0。编辑它。现在它返回到前面的值-是的,这就是我想要的,但仍然没有回答我的问题为什么内联代码不工作。。。
<select name="sval" onchange="if (confirm('...?')) {foo(this.value);sval=(this.value);} else $(this).val(sval);">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
var sval=1;
function foo(v) {
$('#svalue').val(v);
}