在一个表格中,有n个(select控件),每一个select控件的值都是(1至n)。
我想用JS来实现这样子的功能:
例如:我在其中一个控件中选择了(1),那么剩下的n-1个控件的值都要变为(1至n-1)。当在第二个控件中选择(2),那么剩下的n-2个控件的值都要变为(1至n-3)。请注意,是当点击任何一个控件,都可以实现这个功能。 其实我最终想实现的功能是:我在其中一个控件中选择了(x),那么剩下的n-1个控件的值都要变为(1至n中除x之外大的剩余值)。当在第二个控件中选择(y),那么剩下的n-2个控件的值都要变为(1至n中除x、y之外的剩余值)。当点击第三、第四、第五至第n个控件时,实现的功能都是类推下去的。
请问各位大虾们,这样子的JS应该怎么写????
我想用JS来实现这样子的功能:
例如:我在其中一个控件中选择了(1),那么剩下的n-1个控件的值都要变为(1至n-1)。当在第二个控件中选择(2),那么剩下的n-2个控件的值都要变为(1至n-3)。请注意,是当点击任何一个控件,都可以实现这个功能。 其实我最终想实现的功能是:我在其中一个控件中选择了(x),那么剩下的n-1个控件的值都要变为(1至n中除x之外大的剩余值)。当在第二个控件中选择(y),那么剩下的n-2个控件的值都要变为(1至n中除x、y之外的剩余值)。当点击第三、第四、第五至第n个控件时,实现的功能都是类推下去的。
请问各位大虾们,这样子的JS应该怎么写????
<select>
<option value="">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select>
<option value="">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<select>
<option value="">请选择</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>var selects = $('select');
selects.change(function() {
selects.not(this).find('option[value=' + $(this).val() + ']').remove();
});
1.转换为字符型:String(); 例:String(678)的结果为"678"
2.转换为数值型:Number(); 例:Number("678")的结果为678
3.转换为布尔型:Boolean(); 例:Boolean("aaa")的结果为true获取控件总的个数,从选择的那个控件开始,一直到最后一个,通过"control"+数字的形式,一个个地赋值.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
function initData(oSel, nMax){
oSel.options.length = 0;
oSel.options.add(new Option('请选择', ''));
for(var i = 1; i <= nMax; i++){
oSel.options.add(new Option(i, i));
}
}
function reomveOption(sels, index, value){
var i = 0, j, len = sels.length;
for(i = 0; i < len; i++){
if( i != index ){
for(j = 0; j < sels[i].options.length; j++){
if(sels[i].options[j].value == value){
sels[i].remove(j);
}
}
}
}
}
function insertOption(sels, index, value){
var i = 0, j, len = sels.length, opt;
for(i = 0; i < len; i++){
if( i != index ){
opt = new Option(value, value);
document.all && (opt.innerHTML = value);
for(j = 0; j < sels[i].options.length; j++){
if(sels[i].options[j].value > value){
sels[i].insertBefore(opt, sels[i].options[j]);
break;
}
}
if(j >= sels[i].options.length){
sels[i].options.add(opt);
}
}
}
}
window.onload = function(){
var tb = document.getElementById("tb"),
sels = tb.getElementsByTagName("select"),
i, len = sels.length;
for(i = 0; i < len; i++){
initData(sels[i], len);
(function(i){
sels[i].onchange = function(){
if(this.prevValue){
insertOption(sels, i, this.prevValue);
this.prevValue = null;
}
if(this.selectedIndex > 0){
reomveOption(sels, i, this.prevValue = this.options[this.selectedIndex].value);
}
};
})(i);
}
};
</script>
</head><body>
<table id="tb" cellpadding="5">
<tr><td>1</td><td><select></select></td></tr>
<tr><td>2</td><td><select></select></td></tr>
<tr><td>3</td><td><select></select></td></tr>
<tr><td>4</td><td><select></select></td></tr>
<tr><td>5</td><td><select></select></td></tr>
<tr><td>6</td><td><select></select></td></tr>
</table>
</body>
</html>
selects.change(function() {
selects.not(this).find('option[value=' + $(this).val() + ']').remove();
})
换成 sels[i].appendChild(opt);上面的在IE下会报错```
<tr><td>1</td><td><select name="sel1"></select></td></tr>
<tr><td>2</td><td><select name="sel2"></select></td></tr>
<tr><td>3</td><td><select ...></select></td></tr>
<tr><td>4</td><td><select></select></td></tr>
<tr><td>5</td><td><select></select></td></tr>
<tr><td>6</td><td><select></select></td></tr>
</table>
再这样,取不到值吗?Request.Form["sel1"]