javascript-将函数结果显示为HTML

javascript-将函数结果显示为HTML,javascript,html,Javascript,Html,所以我有这个代码: function check_total() { var inputElems = document.getElementsByTagName("input"), total = 0; for (var i=0; i<inputElems.length; i++) { if (inputElems[i].type == "checkbox"){ total++; } } }

所以我有这个代码:

function check_total()
  {
   var inputElems = document.getElementsByTagName("input"),
    total = 0;

    for (var i=0; i<inputElems.length; i++) {       
       if (inputElems[i].type == "checkbox"){
          total++;
       }
    }
}   

document.getElementById('totalInput').innerHTML = total;
功能检查\u总计()
{
var inputElems=document.getElementsByTagName(“输入”),
总数=0;

对于(var i=0;i,代码片段中缺少一些东西

首先,您需要将“total”变量移到函数之外。通过成为全局变量,您可以在以后的代码中使用它

其次,您需要实际触发此函数,以便它执行并更新total变量

check_total();
就在document.getElementById…行之前

最后,您可以使用document.querySelectorAll()函数来简化此过程。这将返回所有匹配元素的数组,您只需将其用作.innerHTML的一部分即可。通过使用此函数,您可以将所有代码替换为:

document.getElementById('totalInput').innerText = document.querySelectorAll("input[type=checkbox]").length;
最后,顺便说一句,您可能应该使用.innerText而不是.innerHTML。使用innerHTML总是很危险的,因为有人可能会在这里注入一些javascript。在这种情况下,因为您不想显示实际的HTML,所以只需使用.innerText,它做同样的事情,但使用文本而不是HTML


下面是一个工作示例:

代码片段中缺少一些东西

首先,您需要将“total”变量移到函数之外。通过成为全局变量,您可以在以后的代码中使用它

其次,您需要实际触发此函数,以便它执行并更新total变量

check_total();
就在document.getElementById…行之前

最后,您可以使用document.querySelectorAll()函数来简化此过程。这将返回所有匹配元素的数组,您只需将其用作.innerHTML的一部分即可。通过使用此函数,您可以将所有代码替换为:

document.getElementById('totalInput').innerText = document.querySelectorAll("input[type=checkbox]").length;
最后,顺便说一句,您可能应该使用.innerText而不是.innerHTML。使用innerHTML总是很危险的,因为有人可能会在这里注入一些javascript。在这种情况下,因为您不想显示实际的HTML,所以只需使用.innerText,它做同样的事情,但使用文本而不是HTML


这里有一个有效的例子:

我没有深入研究Joel的答案,所以不知道这是否也解决了这个问题。 我想Tyr肯定有什么发现,不过我也想知道你是否真的想知道复选框是否被选中了

这是一个快速而肮脏的射击

    <!DOCTYPE html>
    <html>

    <head>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                
                document.getElementById('doit').addEventListener('click', function() {
                    check_total();
                });
                
            });
            
            function check_total()
              {
               var inputElems = document.getElementsByTagName("input"),
                total = 0;

                for (var i=0; i<inputElems.length; i++) {       
                   if (inputElems[i].type == "checkbox"){
                      // do you want to check the checkbox is checked, because it doesn't at the moment?
                      total++;
                   }
                }
                document.getElementById('totalInput').innerHTML = total;
            }   


        </script>
    </head>

    <body>
        <button id="doit">Do it</button><br />
        <input type="checkbox" /><br />
        <input type="checkbox" /><br />
        <div id="totalInput"></div>

    </body>

    </html>

document.addEventListener('DOMContentLoaded',function(){
document.getElementById('doit')。addEventListener('click',function(){
检查_total();
});
});
功能检查_总计()
{
var inputElems=document.getElementsByTagName(“输入”),
总数=0;

对于(var i=0;i我没有深入研究Joel的答案,所以不知道这是否也解决了这个问题。 我想Tyr肯定有什么发现,不过我也想知道你是否真的想知道复选框是否被选中了

这是一个快速而肮脏的射击

    <!DOCTYPE html>
    <html>

    <head>
        <script>
            document.addEventListener('DOMContentLoaded', function() {
                
                document.getElementById('doit').addEventListener('click', function() {
                    check_total();
                });
                
            });
            
            function check_total()
              {
               var inputElems = document.getElementsByTagName("input"),
                total = 0;

                for (var i=0; i<inputElems.length; i++) {       
                   if (inputElems[i].type == "checkbox"){
                      // do you want to check the checkbox is checked, because it doesn't at the moment?
                      total++;
                   }
                }
                document.getElementById('totalInput').innerHTML = total;
            }   


        </script>
    </head>

    <body>
        <button id="doit">Do it</button><br />
        <input type="checkbox" /><br />
        <input type="checkbox" /><br />
        <div id="totalInput"></div>

    </body>

    </html>

document.addEventListener('DOMContentLoaded',function(){
document.getElementById('doit')。addEventListener('click',function(){
检查_total();
});
});
功能检查_总计()
{
var inputElems=document.getElementsByTagName(“输入”),
总数=0;

对于(var i=0;i您的示例看起来应该可以运行,除了代码中的情况外,您永远不会从函数返回任何内容。您还需要调用函数以使其运行计算

function check_total() {
    var inputElems = document.getElementsByTagName("input"),
    total = 0;

    for (var i=0; i<inputElems.length; i++) {       
       if (inputElems[i].type == "checkbox"){
           total++;
       }
    }
    return total;
}   

document.getElementById('totalInput').innerHTML = check_total();
功能检查\u总计(){
var inputElems=document.getElementsByTagName(“输入”),
总数=0;

对于(var i=0;i您的示例看起来应该可以运行,除了代码中的情况外,您永远不会从函数返回任何内容。您还需要调用函数以使其运行计算

function check_total() {
    var inputElems = document.getElementsByTagName("input"),
    total = 0;

    for (var i=0; i<inputElems.length; i++) {       
       if (inputElems[i].type == "checkbox"){
           total++;
       }
    }
    return total;
}   

document.getElementById('totalInput').innerHTML = check_total();
功能检查\u总计(){
var inputElems=document.getElementsByTagName(“输入”),
总数=0;

对于(var i=0;i尝试从查询所有复选框得到的节点列表构建一个数组:

const countCheckboxes = () =>
  document.querySelectorAll('input[type=checkbox]')

const updateHeader = () =>
  document.getElementById('totalInput').textContent = countCheckboxes();

updateHeader();
如果只想计算选中的复选框,则应使用
Array.from

const isChecked = input =>
  input.checked

const checkedCheckboxes = () 
  Array.from(document.querySelectorAll('input[type=checkbox]'))
    .filter(isChecked)
    .length

尝试从查询所有复选框得到的节点列表中构建一个数组:

const countCheckboxes = () =>
  document.querySelectorAll('input[type=checkbox]')

const updateHeader = () =>
  document.getElementById('totalInput').textContent = countCheckboxes();

updateHeader();
如果只想计算选中的复选框,则应使用
Array.from

const isChecked = input =>
  input.checked

const checkedCheckboxes = () 
  Array.from(document.querySelectorAll('input[type=checkbox]'))
    .filter(isChecked)
    .length

您试图将函数结果绘制到DOM中的那一行不在函数中。请将该行放入check_total()中(记住也要调用函数)

功能检查\u总计(){
var inputElems=document.getElementsByTagName(“输入”),
总数=0;
对于(变量i=0;i


默认情况下,您试图将函数结果绘制到DOM中的那一行不在函数中。请将该行放入check_total()中(记住也要调用函数)

功能检查\u总计(){
var inputElems=document.getElementsByTagName(“输入”),
总数=0;
对于(变量i=0;i


默认值
将总数设置为0;
outsi