用js实现把一组同名复选框中已经选中的复选框的value值都加入到一个树组中! 用js实现把一组同名复选框中已经选中的复选框的value值都加入到一个树组中! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var a = new Array();var checkBoxes = document.getElementsByName("checkBoxName")for(var i=0; i<checkBoxes.length; i++){ a[i] = checkBoxes[i].selected;} 我想主要实现这样的功能,一组复选框,把选中的复选框的值都加到一个textfield中 不好意思请把selected改为checked <html><head><title>Test</title></head><body><input type="checkbox" name="checkBoxName" checked="true"><br><input type="checkbox" name="checkBoxName"><br><input type="checkbox" name="checkBoxName"><br><input type="checkbox" name="checkBoxName"><br><input type="text" id="textField" value=""><br><input type="button" value="Show Value" onclick="javascript:showValue()"><br><script>function showValue(){ var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName") for(var i=0; i<checkBoxes.length; i++){ a[i] = checkBoxes[i].checked; } textField.value = a;}</script></body></html> <html><head><title>Test</title></head><body><input type="checkbox" name="checkBoxName" checked="true" value="check1"><br><input type="checkbox" name="checkBoxName" value="check2"><br><input type="checkbox" name="checkBoxName" value="check3"><br><input type="checkbox" name="checkBoxName" value="check4"><br><input type="text" id="textField" value=""><br><input type="button" value="Show Value" onclick="javascript:showValue()"><br><script>function showValue(){ var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName") var idx=0; for(var i=0; i<checkBoxes.length; i++){ if(checkBoxes[i].checked == true) a[idx++] = checkBoxes[i].value; } textField.value = a;}</script></body></html> 你的树组是什么意思?是数组呢?还是树组?如果是数组呢.那就是这样做.function changeRadio(obj){ var size=0; var checkObj = document.getElementsByName("check"); for(i=0;i<checkObj.length;i++){ if(checkObj[i].checked){ size++; } } var valueArray = new Array(size); var cnt = 0; for(j=0;j<checkObj.length;j++){ if(checkObj[j].checked) valueArray[cnt++]=checkObj[j].value; } for(k=0;k<valueArray.length;k++){ alert(valueArray[k]); }} 我看看啊不需要按钮的,是选中一个就自动在textField里加一个值的 <html><head><title>Test</title></head><body><input type="checkbox" name="checkBoxName" value="check1" onclick="javascript:showValue()"><br><input type="checkbox" name="checkBoxName" value="check2" onclick="javascript:showValue()"><br><input type="checkbox" name="checkBoxName" value="check3" onclick="javascript:showValue()"><br><input type="checkbox" name="checkBoxName" value="check4" onclick="javascript:showValue()"><br><input type="text" id="textField" value=""><br><script>function showValue(){ var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName") var idx=0; for(var i=0; i<checkBoxes.length; i++){ if(checkBoxes[i].checked == true) a[idx++] = checkBoxes[i].value; } textField.value = a;}</script></body></html> <html> <head><title>CheckBox Selected By Ctrl</title></head><script>function changeRadio(obj){ var size=0; var checkObj = document.getElementsByName("check"); for(i=0;i<checkObj.length;i++){ if(checkObj[i].checked){ size++; } } var valueArray = new Array(size); var cnt = 0; for(j=0;j<checkObj.length;j++){ if(checkObj[j].checked) valueArray[cnt++]=checkObj[j].value; } for(k=0;k<valueArray.length;k++){ targetObj.value+=valueArray[k]+","; }}/*** 给隐藏域的name赋值,便于name组装成一个数组* @checkIndex 选择的checkBox对象所在的索引下标* @dataValue 需要对目录对象赋值的值*/function datanameEnable(checkIndex,dataValue) { var target = event.target || event.srcElement; var checkBoxList = document.getElementsByName(target.name); var chk = checkBoxList[checkIndex]; if(event.ctrlKey){ var checki=-1; if(chk.checked){ for(i=checkIndex-1;i>=0;i--){ if(checkBoxList[i].checked && checkIndex!=i){ checki=i; break; } } if(checki>-1){ if(checkIndex>=checki){ for(j=(checki+1);j<checkIndex;j++){ checkBoxList[j].checked=!checkBoxList[j].checked;; } } } }else{ var unchecki = -1; for(k=checkIndex-1;k>=0;k--){ if(!checkBoxList[k].checked && checkIndex!=k){ unchecki=k; break; } } if(unchecki>-1 && checkIndex>=unchecki){ for(j=unchecki+1;j<checkIndex;j++){ checkBoxList[j].checked=!checkBoxList[j].checked;; } } } } }</script> <body> <input type="checkBox" name="check" value="check1" onclick="javascript:datanameEnable(0,'check1');">记录1<br> <input type="checkBox" name="check" value="check2" onclick="javascript:datanameEnable(1,'check2');">记录2<br> <input type="checkBox" name="check" value="check3" onclick="javascript:datanameEnable(2,'check3');">记录3<br> <input type="checkBox" name="check" value="check4" onclick="javascript:datanameEnable(3,'check4');">记录4<br> <input type="checkBox" name="check" value="check5" onclick="javascript:datanameEnable(4,'check5');">记录5<br> <input type="checkBox" name="check" value="check6" onclick="javascript:datanameEnable(5,'check6');">记录6<br> <input type="checkBox" name="check" value="check7" onclick="javascript:datanameEnable(6,'check7');">记录7<br> <input type="checkBox" name="check" value="check8" onclick="javascript:datanameEnable(7,'check8');">记录8<br> <input type="checkBox" name="check" value="check9" onclick="javascript:datanameEnable(8,'check9');">记录9<br> <input type="checkBox" name="check" value="check10" onclick="javascript:datanameEnable(9,'check10');">记录10<br> <input type="checkBox" name="check" value="check11" onclick="javascript:datanameEnable(10,'check11');">记录11<br> <input type="checkBox" name="check" value="check12" onclick="javascript:datanameEnable(11,'check12');">记录12<br> <input type="checkBox" name="check" value="check13" onclick="javascript:datanameEnable(12,'check13');">记录13<br> <input type="checkBox" name="check" value="check14" onclick="javascript:datanameEnable(12,'check14');">记录14<br> <input type="checkBox" name="check" value="check15" onclick="javascript:datanameEnable(14,'check15');">记录15<br> <input type="button" class=radiobutton value="赋值" onclick="javascript:changeRadio(this);"> <br> <input type="text" name="targetObj" value="" length="50"> </body></html> 呵呵,是数组,为实现这样的功能:一组复选框,把选中的复选框的值都加到一个textfield中,不需要按钮,是选中一个复选框就自动往textfield里加一个值 polarman:a[idx++] = checkBoxes[i].value;这个能用简单点的方法解释下吗?这个没大看懂 huxinsheng168(望M止渴) 谢谢你,你没大明白我的意思,一会给你结分啊,我先看看polarman的,他做的差不多了 不是啊.我写的只是把昨天一个人的答案结合在一起了,是一个按住ctrl多选复选框的功能.你要的功能按按钮就能实现啊. checkbox的value最终都是要从数据库里读出来的,目前一步一步的做呢,先把选中的值即时的传到textfield里 <script language="JavaScript"> function test(){ var checks=document.getElementsByName("Check"); var i=0; var arrayObj = new Array(); for(;i<checks.length;i++){ if(checks[i].checked){ arrayObj[i]=checks[i].value; } } alert(arrayObj.toString()); } </script><form name="form1"><center><h1>Click one of the check boxes...</h1><table border bgcolor=cyan width=200><tr><td><input type="checkbox" id="Check1" name="Check" value="Check 1" >Check 1</td></tr><tr><td><input type="checkbox" id="Check2" name="Check" value="Check 2">Check 2</td></tr><tr><td><input type="checkbox" id="Check3" name="Check" value="Check 3">Check 3</td></tr><tr><td><input type="checkbox" id="Check4" name="Check" value="Check 41">Check 4</td></tr><tr><td><input type="checkbox" id="Check5" name="Check" value="Check 5">Check 5</td></tr></table><br><input type="button" value="按钮" name="B1" onclick="test()"><br><input type="text" name="Textbox" size=25></center></form> a[idx++] = checkBoxes[i].value;这个能用简单点的句子来表示吗?没大看懂 全部帮你搞定<html> <head><title>CheckBox Selected By Ctrl</title></head><script>/*** 给隐藏域的name赋值,便于name组装成一个数组* @checkIndex 选择的checkBox对象所在的索引下标* @dataValue 需要对目录对象赋值的值*/function datanameEnable(checkObj) { var checkObjList = document.getElementsByName("check"); if(checkObj.checked){ targetObj.value+=checkObj.value+","; } if(!checkObj.checked){ targetObj.value=""; for(i=0;i<checkObjList.length;i++){ if(checkObjList[i].checked){ targetObj.value+=checkObjList[i].value+","; } } } }</script> <body> <input type="checkBox" name="check" value="check1" onclick="javascript:datanameEnable(this);">记录1<br> <input type="checkBox" name="check" value="check2" onclick="javascript:datanameEnable(this);">记录2<br> <input type="checkBox" name="check" value="check3" onclick="javascript:datanameEnable(this);">记录3<br> <input type="checkBox" name="check" value="check4" onclick="javascript:datanameEnable(this);">记录4<br> <input type="checkBox" name="check" value="check5" onclick="javascript:datanameEnable(this);">记录5<br> <input type="checkBox" name="check" value="check6" onclick="javascript:datanameEnable(this);">记录6<br> <input type="checkBox" name="check" value="check7" onclick="javascript:datanameEnable(this);">记录7<br> <input type="checkBox" name="check" value="check8" onclick="javascript:datanameEnable(this);">记录8<br> <input type="checkBox" name="check" value="check9" onclick="javascript:datanameEnable(this);">记录9<br> <input type="checkBox" name="check" value="check10" onclick="javascript:datanameEnable(this);">记录10<br> <input type="checkBox" name="check" value="check11" onclick="javascript:datanameEnable(this);">记录11<br> <input type="checkBox" name="check" value="check12" onclick="javascript:datanameEnable(this);">记录12<br> <input type="checkBox" name="check" value="check13" onclick="javascript:datanameEnable(this);">记录13<br> <input type="checkBox" name="check" value="check14" onclick="javascript:datanameEnable(this);">记录14<br> <input type="checkBox" name="check" value="check15" onclick="javascript:datanameEnable(this);">记录15<br> <input type="text" name="targetObj" value="" length="150"> </body></html> huxinsheng168(望M止渴) 分给的少了,还想多给你,你去web里的javascript里找这个同样的问题,也是我问的,你随便说句话,我再给你分,这么再给我不会给了,谢谢你啊 polarmanfor(var i=0; i<checkBoxes.length; i++){if(checkBoxes[i].checked == true)a[idx++] = checkBoxes[i].value;}a[idx++] = checkBoxes[i].value;这个能用简单点的句子来表示和解释下吗?没大看懂谢谢你啊 for(var i=0; i<checkBoxes.length; i++){if(checkBoxes[i].checked == true)a[idx++] = checkBoxes[i].value;}这个其实还可以简单点for(i=0; i<checkBoxes.length; i++){if(checkBoxes[i].checked)a[idx++] = checkBoxes[i].value;}因为checkBoxes[i].checked本身就是一个boolean值.就没必要做==true判断了如果checkBoxes[i]选中,那么就把这个选中的复选框的值赋给数组a 你真不再要分了啊,那我就把另一个区(web->js)的帖子结分了啊 a[idx++]就是说.先定义一个idx=0;然后在for(i=0; i<checkBoxes.length; i++){if(checkBoxes[i].checked)//如果选中a[idx++] = checkBoxes[i].value;//那么idx就自动++,这个++相当于idex=idex+1;可以简写成id++} a[idx++] = checkBoxes[i].value;==a[idx] = checkBoxes[i].value;idx = idx + 1; JSP里面验证码如何生成倾斜的 JSTL 问题 JBuilder 读文件 用JAVA做一个站内搜索大家有什么好的解决方案 或者一个成熟的框架 weblogic+jsp上传问题?(急!在线等回复) Struts 自带连接池的效率高吗? tomcat 连接 ms sqlserver2000的问题 我不信? EJB是什么东西,重要吗? tomcat为什么META-INF目录下配置context.xml不生效? Struts HTML 标签库 中标签属性的问题 高分求,你认为最能考察struts开发能力的面试题
for(var i=0; i<checkBoxes.length; i++){
a[i] = checkBoxes[i].selected;
}
请把selected改为checked
<head>
<title>Test</title>
</head>
<body>
<input type="checkbox" name="checkBoxName" checked="true"><br>
<input type="checkbox" name="checkBoxName"><br>
<input type="checkbox" name="checkBoxName"><br>
<input type="checkbox" name="checkBoxName"><br><input type="text" id="textField" value=""><br><input type="button" value="Show Value" onclick="javascript:showValue()"><br><script>function showValue(){
var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName")
for(var i=0; i<checkBoxes.length; i++){
a[i] = checkBoxes[i].checked;
}
textField.value = a;
}</script></body>
</html>
<head>
<title>Test</title>
</head>
<body>
<input type="checkbox" name="checkBoxName" checked="true" value="check1"><br>
<input type="checkbox" name="checkBoxName" value="check2"><br>
<input type="checkbox" name="checkBoxName" value="check3"><br>
<input type="checkbox" name="checkBoxName" value="check4"><br><input type="text" id="textField" value=""><br><input type="button" value="Show Value" onclick="javascript:showValue()"><br><script>function showValue(){
var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName")
var idx=0;
for(var i=0; i<checkBoxes.length; i++){
if(checkBoxes[i].checked == true)
a[idx++] = checkBoxes[i].value;
}
textField.value = a;
}</script></body>
</html>
如果是数组呢.那就是这样做.
function changeRadio(obj){
var size=0;
var checkObj = document.getElementsByName("check");
for(i=0;i<checkObj.length;i++){
if(checkObj[i].checked){
size++;
}
}
var valueArray = new Array(size);
var cnt = 0;
for(j=0;j<checkObj.length;j++){
if(checkObj[j].checked)
valueArray[cnt++]=checkObj[j].value;
}
for(k=0;k<valueArray.length;k++){
alert(valueArray[k]);
}
}
不需要按钮的,是选中一个就自动在textField里加一个值的
<head>
<title>Test</title>
</head>
<body>
<input type="checkbox" name="checkBoxName" value="check1" onclick="javascript:showValue()"><br>
<input type="checkbox" name="checkBoxName" value="check2" onclick="javascript:showValue()"><br>
<input type="checkbox" name="checkBoxName" value="check3" onclick="javascript:showValue()"><br>
<input type="checkbox" name="checkBoxName" value="check4" onclick="javascript:showValue()"><br><input type="text" id="textField" value=""><br><script>function showValue(){
var a = new Array(); var checkBoxes = document.getElementsByName("checkBoxName")
var idx=0;
for(var i=0; i<checkBoxes.length; i++){
if(checkBoxes[i].checked == true)
a[idx++] = checkBoxes[i].value;
}
textField.value = a;
}</script></body>
</html>
<head><title>CheckBox Selected By Ctrl</title></head>
<script>
function changeRadio(obj){
var size=0;
var checkObj = document.getElementsByName("check");
for(i=0;i<checkObj.length;i++){
if(checkObj[i].checked){
size++;
}
}
var valueArray = new Array(size);
var cnt = 0;
for(j=0;j<checkObj.length;j++){
if(checkObj[j].checked)
valueArray[cnt++]=checkObj[j].value;
}
for(k=0;k<valueArray.length;k++){
targetObj.value+=valueArray[k]+",";
}
}
/**
* 给隐藏域的name赋值,便于name组装成一个数组
* @checkIndex 选择的checkBox对象所在的索引下标
* @dataValue 需要对目录对象赋值的值
*/
function datanameEnable(checkIndex,dataValue) {
var target = event.target || event.srcElement;
var checkBoxList = document.getElementsByName(target.name);
var chk = checkBoxList[checkIndex];
if(event.ctrlKey){
var checki=-1;
if(chk.checked){
for(i=checkIndex-1;i>=0;i--){
if(checkBoxList[i].checked && checkIndex!=i){
checki=i;
break;
}
}
if(checki>-1){
if(checkIndex>=checki){
for(j=(checki+1);j<checkIndex;j++){
checkBoxList[j].checked=!checkBoxList[j].checked;;
}
}
}
}else{
var unchecki = -1;
for(k=checkIndex-1;k>=0;k--){
if(!checkBoxList[k].checked && checkIndex!=k){
unchecki=k;
break;
}
}
if(unchecki>-1 && checkIndex>=unchecki){
for(j=unchecki+1;j<checkIndex;j++){
checkBoxList[j].checked=!checkBoxList[j].checked;;
}
}
}
}
}
</script>
<body>
<input type="checkBox" name="check" value="check1" onclick="javascript:datanameEnable(0,'check1');">记录1<br>
<input type="checkBox" name="check" value="check2" onclick="javascript:datanameEnable(1,'check2');">记录2<br>
<input type="checkBox" name="check" value="check3" onclick="javascript:datanameEnable(2,'check3');">记录3<br>
<input type="checkBox" name="check" value="check4" onclick="javascript:datanameEnable(3,'check4');">记录4<br>
<input type="checkBox" name="check" value="check5" onclick="javascript:datanameEnable(4,'check5');">记录5<br>
<input type="checkBox" name="check" value="check6" onclick="javascript:datanameEnable(5,'check6');">记录6<br>
<input type="checkBox" name="check" value="check7" onclick="javascript:datanameEnable(6,'check7');">记录7<br>
<input type="checkBox" name="check" value="check8" onclick="javascript:datanameEnable(7,'check8');">记录8<br>
<input type="checkBox" name="check" value="check9" onclick="javascript:datanameEnable(8,'check9');">记录9<br>
<input type="checkBox" name="check" value="check10" onclick="javascript:datanameEnable(9,'check10');">记录10<br>
<input type="checkBox" name="check" value="check11" onclick="javascript:datanameEnable(10,'check11');">记录11<br>
<input type="checkBox" name="check" value="check12" onclick="javascript:datanameEnable(11,'check12');">记录12<br>
<input type="checkBox" name="check" value="check13" onclick="javascript:datanameEnable(12,'check13');">记录13<br>
<input type="checkBox" name="check" value="check14" onclick="javascript:datanameEnable(12,'check14');">记录14<br>
<input type="checkBox" name="check" value="check15" onclick="javascript:datanameEnable(14,'check15');">记录15<br>
<input type="button" class=radiobutton value="赋值" onclick="javascript:changeRadio(this);">
<br>
<input type="text" name="targetObj" value="" length="50">
</body>
</html>
一组复选框,把选中的复选框的值都加到一个textfield中,不需要按钮,是选中一个复选框就自动往textfield里加一个值
a[idx++] = checkBoxes[i].value;
这个能用简单点的方法解释下吗?这个没大看懂
你要的功能按按钮就能实现啊.
function test(){
var checks=document.getElementsByName("Check");
var i=0;
var arrayObj = new Array(); for(;i<checks.length;i++){
if(checks[i].checked){
arrayObj[i]=checks[i].value;
}
}
alert(arrayObj.toString());
}
</script>
<form name="form1">
<center>
<h1>Click one of the check boxes...</h1><table border bgcolor=cyan width=200>
<tr><td><input type="checkbox" id="Check1" name="Check" value="Check 1" >Check 1</td></tr>
<tr><td><input type="checkbox" id="Check2" name="Check" value="Check 2">Check 2</td></tr>
<tr><td><input type="checkbox" id="Check3" name="Check" value="Check 3">Check 3</td></tr>
<tr><td><input type="checkbox" id="Check4" name="Check" value="Check 41">Check 4</td></tr>
<tr><td><input type="checkbox" id="Check5" name="Check" value="Check 5">Check 5</td></tr>
</table><br><input type="button" value="按钮" name="B1" onclick="test()"><br>
<input type="text" name="Textbox" size=25>
</center>
</form>
这个能用简单点的句子来表示吗?没大看懂
<head><title>CheckBox Selected By Ctrl</title></head>
<script>
/**
* 给隐藏域的name赋值,便于name组装成一个数组
* @checkIndex 选择的checkBox对象所在的索引下标
* @dataValue 需要对目录对象赋值的值
*/
function datanameEnable(checkObj) {
var checkObjList = document.getElementsByName("check");
if(checkObj.checked){
targetObj.value+=checkObj.value+",";
}
if(!checkObj.checked){
targetObj.value="";
for(i=0;i<checkObjList.length;i++){
if(checkObjList[i].checked){
targetObj.value+=checkObjList[i].value+",";
}
}
}
}
</script>
<body>
<input type="checkBox" name="check" value="check1" onclick="javascript:datanameEnable(this);">记录1<br>
<input type="checkBox" name="check" value="check2" onclick="javascript:datanameEnable(this);">记录2<br>
<input type="checkBox" name="check" value="check3" onclick="javascript:datanameEnable(this);">记录3<br>
<input type="checkBox" name="check" value="check4" onclick="javascript:datanameEnable(this);">记录4<br>
<input type="checkBox" name="check" value="check5" onclick="javascript:datanameEnable(this);">记录5<br>
<input type="checkBox" name="check" value="check6" onclick="javascript:datanameEnable(this);">记录6<br>
<input type="checkBox" name="check" value="check7" onclick="javascript:datanameEnable(this);">记录7<br>
<input type="checkBox" name="check" value="check8" onclick="javascript:datanameEnable(this);">记录8<br>
<input type="checkBox" name="check" value="check9" onclick="javascript:datanameEnable(this);">记录9<br>
<input type="checkBox" name="check" value="check10" onclick="javascript:datanameEnable(this);">记录10<br>
<input type="checkBox" name="check" value="check11" onclick="javascript:datanameEnable(this);">记录11<br>
<input type="checkBox" name="check" value="check12" onclick="javascript:datanameEnable(this);">记录12<br>
<input type="checkBox" name="check" value="check13" onclick="javascript:datanameEnable(this);">记录13<br>
<input type="checkBox" name="check" value="check14" onclick="javascript:datanameEnable(this);">记录14<br>
<input type="checkBox" name="check" value="check15" onclick="javascript:datanameEnable(this);">记录15<br>
<input type="text" name="targetObj" value="" length="150">
</body>
</html>
for(var i=0; i<checkBoxes.length; i++){
if(checkBoxes[i].checked == true)
a[idx++] = checkBoxes[i].value;
}
a[idx++] = checkBoxes[i].value;
这个能用简单点的句子来表示和解释下吗?没大看懂谢谢你啊
if(checkBoxes[i].checked == true)
a[idx++] = checkBoxes[i].value;
}
这个其实还可以简单点
for(i=0; i<checkBoxes.length; i++){
if(checkBoxes[i].checked)
a[idx++] = checkBoxes[i].value;
}
因为checkBoxes[i].checked本身就是一个boolean值.就没必要做==true判断了
如果checkBoxes[i]选中,那么就把这个选中的复选框的值赋给数组a
就是说.先定义一个idx=0;
然后在
for(i=0; i<checkBoxes.length; i++){
if(checkBoxes[i].checked)//如果选中
a[idx++] = checkBoxes[i].value;//那么idx就自动++,这个++相当于idex=idex+1;可以简写成id++
}
==
a[idx] = checkBoxes[i].value;
idx = idx + 1;