Javascript 在文本区域中显示复选框的值

Javascript 在文本区域中显示复选框的值,javascript,checkbox,textarea,Javascript,Checkbox,Textarea,我这里有一个代码,当选中时,它将显示复选框的值。我的问题是,我不知道如何将所有数字相加,当我选中一个复选框时,数字或值将自动显示到文本区域,当我选中另一个复选框时,它将相加到我选中的第一个复选框,当我选中另一个复选框时,它也应该从前两个复选框相加。我该怎么做 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"

我这里有一个代码,当选中时,它将显示复选框的值。我的问题是,我不知道如何将所有数字相加,当我选中一个复选框时,数字或值将自动显示到文本区域,当我选中另一个复选框时,它将相加到我选中的第一个复选框,当我选中另一个复选框时,它也应该从前两个复选框相加。我该怎么做

                <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
            <html>
            <head>
            <title></title>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <script type="text/javascript">
            function add_sub(el)
            {
                if (el.checked)
                {
                    var total = el;
                    total.form.elements['type'].value+=el.value;
                }
                else
                {
                    var re=new RegExp('(.*)'+el.value+'(.*)$');
                    el.form.elements['type'].value=el.form.elements['type'].value.replace(re,'$1$2');
                }
            }
            </script>
            </head>

            <body>
                <form name="form1" method=post>
                    <textarea name="type" rows="5" cols="35" onclick="this.focus();this.select();"></textarea><br>
                    <input type="checkbox" name="mis1" id="id1" value="1" onclick="add_sub(this);"><label>1</label><br>
                    <input type="checkbox" name="mis2" id="id2" value="2" onclick="add_sub(this);"><label>2</label><br>
                    <input type="checkbox" name="mis6" id="id3" value="3" onclick="add_sub(this);"><label>3</label><br>
                    <input type="checkbox" name="mis6" id="id4" value="4" onclick="add_sub(this);"><label>4</label>
                </form>
            </body>

功能添加子单元(el)
{
如果(标高已勾选)
{
var总=el;
总计.form.elements['type'].value+=el.value;
}
其他的
{
var re=new RegExp(“(.*”)+el.value+”(.*)$”;
el.form.elements['type'].value=el.form.elements['type'].value.replace(关于,$1$2');
}
}

1
2
3
4.
如果这是您的意思,请检查这把小提琴:

以下是脚本:

var currNum = 0;
var txtArea = document.getElementById("txtArea");
var form = document.getElementById("mainForm");
function add_sub(el){
    debugger;
                if (el.checked)
                {
                    currNum += parseInt(el.value,10);
                }
                else
                {
                    currNum -= parseInt(el.value,10);
                }
                txtArea.value = currNum;
}

form.addEventListener("click", function(ev){
    if(ev.target.getAttribute("type") == "checkbox"){
        add_sub(ev.target);
    }
},false);
这是HTML:

    <body>
        <form id="mainForm" name="form1" method=post>
            <textarea id="txtArea" name="type" rows="5" cols="35" onclick="this.focus();"></textarea><br>
            <input type="checkbox" name="mis1" id="id1" value="1"><label>1</label><br>
            <input type="checkbox" name="mis2" id="id2" value="2"><label>2</label><br>
            <input type="checkbox" name="mis6" id="id3" value="3"><label>3</label><br>
            <input type="checkbox" name="mis6" id="id4" value="4"><label>4</label>
        </form>
    </body>


1
2
3
4.
如果这是您的意思,请检查这把小提琴:

以下是脚本:

var currNum = 0;
var txtArea = document.getElementById("txtArea");
var form = document.getElementById("mainForm");
function add_sub(el){
    debugger;
                if (el.checked)
                {
                    currNum += parseInt(el.value,10);
                }
                else
                {
                    currNum -= parseInt(el.value,10);
                }
                txtArea.value = currNum;
}

form.addEventListener("click", function(ev){
    if(ev.target.getAttribute("type") == "checkbox"){
        add_sub(ev.target);
    }
},false);
这是HTML:

    <body>
        <form id="mainForm" name="form1" method=post>
            <textarea id="txtArea" name="type" rows="5" cols="35" onclick="this.focus();"></textarea><br>
            <input type="checkbox" name="mis1" id="id1" value="1"><label>1</label><br>
            <input type="checkbox" name="mis2" id="id2" value="2"><label>2</label><br>
            <input type="checkbox" name="mis6" id="id3" value="3"><label>3</label><br>
            <input type="checkbox" name="mis6" id="id4" value="4"><label>4</label>
        </form>
    </body>


1
2
3
4.
如果这是您的意思,请检查这把小提琴:

以下是脚本:

var currNum = 0;
var txtArea = document.getElementById("txtArea");
var form = document.getElementById("mainForm");
function add_sub(el){
    debugger;
                if (el.checked)
                {
                    currNum += parseInt(el.value,10);
                }
                else
                {
                    currNum -= parseInt(el.value,10);
                }
                txtArea.value = currNum;
}

form.addEventListener("click", function(ev){
    if(ev.target.getAttribute("type") == "checkbox"){
        add_sub(ev.target);
    }
},false);
这是HTML:

    <body>
        <form id="mainForm" name="form1" method=post>
            <textarea id="txtArea" name="type" rows="5" cols="35" onclick="this.focus();"></textarea><br>
            <input type="checkbox" name="mis1" id="id1" value="1"><label>1</label><br>
            <input type="checkbox" name="mis2" id="id2" value="2"><label>2</label><br>
            <input type="checkbox" name="mis6" id="id3" value="3"><label>3</label><br>
            <input type="checkbox" name="mis6" id="id4" value="4"><label>4</label>
        </form>
    </body>


1
2
3
4.
如果这是您的意思,请检查这把小提琴:

以下是脚本:

var currNum = 0;
var txtArea = document.getElementById("txtArea");
var form = document.getElementById("mainForm");
function add_sub(el){
    debugger;
                if (el.checked)
                {
                    currNum += parseInt(el.value,10);
                }
                else
                {
                    currNum -= parseInt(el.value,10);
                }
                txtArea.value = currNum;
}

form.addEventListener("click", function(ev){
    if(ev.target.getAttribute("type") == "checkbox"){
        add_sub(ev.target);
    }
},false);
这是HTML:

    <body>
        <form id="mainForm" name="form1" method=post>
            <textarea id="txtArea" name="type" rows="5" cols="35" onclick="this.focus();"></textarea><br>
            <input type="checkbox" name="mis1" id="id1" value="1"><label>1</label><br>
            <input type="checkbox" name="mis2" id="id2" value="2"><label>2</label><br>
            <input type="checkbox" name="mis6" id="id3" value="3"><label>3</label><br>
            <input type="checkbox" name="mis6" id="id4" value="4"><label>4</label>
        </form>
    </body>


1
2
3
4.
一些提示:

  • 不要收听
    单击
    事件来检测复选框中的更改。它们可以通过其他方式进行更改,例如使用键盘。您可以改为收听
    change
    事件
  • 不要在HTML源代码中使用事件处理程序内容属性。使用JS添加事件侦听器
  • 不要向所有事件添加相同的事件侦听器。将其委托给一个共同的祖先
  • br
    元素很难看。更好地使用
    显示:block
var总和=0,
表单=document.forms.form1,
text=form1.elements.type;
text.addEventListener('focus',text.select.bind(text));
表.addEventListener('change',函数(e){
如果(e.target.type=='checkbox'){
总和+=e.target.value*(e.target.checked?1:-1);
text.value=总和;
}
});
label{display:block;}

0
1.
2.
3.
4.
一些提示:

  • 不要收听
    单击
    事件来检测复选框中的更改。它们可以通过其他方式进行更改,例如使用键盘。您可以改为收听
    change
    事件
  • 不要在HTML源代码中使用事件处理程序内容属性。使用JS添加事件侦听器
  • 不要向所有事件添加相同的事件侦听器。将其委托给一个共同的祖先
  • br
    元素很难看。更好地使用
    显示:block
var总和=0,
表单=document.forms.form1,
text=form1.elements.type;
text.addEventListener('focus',text.select.bind(text));
表.addEventListener('change',函数(e){
如果(e.target.type=='checkbox'){
总和+=e.target.value*(e.target.checked?1:-1);
text.value=总和;
}
});
label{display:block;}

0
1.
2.
3.
4.
一些提示:

  • 不要收听
    单击
    事件来检测复选框中的更改。它们可以通过其他方式进行更改,例如使用键盘。您可以改为收听
    change
    事件
  • 不要在HTML源代码中使用事件处理程序内容属性。使用JS添加事件侦听器
  • 不要向所有事件添加相同的事件侦听器。将其委托给一个共同的祖先
  • br
    元素很难看。更好地使用
    显示:block
var总和=0,
表单=document.forms.form1,
text=form1.elements.type;
text.addEventListener('focus',text.select.bind(text));
表.addEventListener('change',函数(e){
如果(e.target.type=='checkbox'){
总和+=e.target.value*(e.target.checked?1:-1);
text.value=总和;
}
});
label{display:block;}

0
1.
2.
3.
4.
一些提示:

  • 不要收听
    单击
    事件来检测复选框中的更改。它们可以通过其他方式进行更改,例如使用键盘。您可以改为收听
    change
    事件
  • 不要在HTML源代码中使用事件处理程序内容属性。使用JS添加事件侦听器
  • 不要向所有事件添加相同的事件侦听器。将其委托给一个共同的祖先
  • br
    元素很难看。更好地使用
    显示:block
var总和=0,
表单=document.forms.form1,
text=form1.elements.type;
text.addEventListener('focus',text.select.bind(text));
表.addEventListener('change',函数(e){
如果(e.target.type=='checkbox'){
总和+=e.target.value*(e.target.checked?1:-1);
text.value=总和;
}
});
label{display:block;}

0
1.
2.
3.
4.

以上建议的解决方案基于复选框值为数字的假设,以防您需要字符串值。你可以这样建议

function add_sub(el)
{

  var cbs = document.getElementById('checkboxes').getElementsByTagName('input');
  var textareaValue = '';  
  for (var i = 0, len = cbs.length; i<len; i++) {
    if ( cbs[i].type === 'checkbox' && cbs[i].checked) {
          textareaValue += cbs[i].value + ' ';
    }
  }

   document.getElementById('textarea').value = textareaValue;            
}
功能添加(el)
{
var cbs=文档。