javascript - 尝试制作一个 html 复选框,将数字添加到输出字段

标签 javascript html checkbox html-table

我正在尝试创建一个表格,当我选中一个框时,如果显示的图像是 yes.jpg,则会在列底部的输出框中添加一个数字。如果没有,则不会添加任何数字。有三列,每个复选框影响三个图像,因此影响三个输出框。这是我的代码。

    <html>
<head>
    <script>
     function onSelect(rowId)
     {
        var row = document.getElementById(rowId);
        var checkBox = row.getElementsByTagName("checkRow")[0];
        var outputRow = document.getElementById("outputRow");
        var totalRow1 = outputRow.getElementById("total1");
        var totalRow2 = outputRow.getElementById("total2");
        var totalRow3 = outputRow.getElementById("total3");
        //If box is checked, check images. If they are yes, edit boxes. 
        if (checkBox.checked)
            if (row.getElementById.("image1").src.indexOf(yes.png) > -1)
            {
                totalRow1.innerHTML = "dfd";
            }
        else {
            //checkBox = 
            }
        }
         /*function onCheck()
        {
            var total1 = document.getElementById("total1");
            window.alert("sometext");
            total1.innerHTML = "dfd";
        } */
    </script>
</head>

<body>
    <table border="1">
        <tr> <!-- Table Header -->
            <td>
                Checkbox
            </td>
            <td>
                Items
            </td>
            <td>
                Area 1
            </td>
            <td>
                Area 2
            </td>
            <td>
                Area 3
            </td>
        </tr>

        <tr id="checkRow"> <!-- Row 1 -->
            <td>
                <form>
                    <input type="checkbox" name="Row1" value="Row1" onclick="onCheck();">
                </form>     
            </td>
            <td>
                Item
            </td>
            <td id="image1">
                <img src="yes.png" alt="Needed">
            </td>
            <td id="image2">
                <img src="yes.png" alt="Needed">
            </td>
            <td id="image3">
                <img src="no.png" alt="Needed">
            </td>   
        </tr>



        <tr id="outputRow"> <!-- Table Bottom -->
            <td>
                <!--Empty-->
            </td>
            <td>
                Summation
            </td>
            <td id="total1">
                Area 1
            </td >
            <td id="total2">
                Area 2
            </td>
            <td id= "total3">
                Area 3
            </td>
        </tr>
    </table>
</body>

目前,我只是尝试编辑其中一个输出框的输出文本(如我的 onCheck() 方法所示)。然而,即使这样似乎也不起作用。我添加了一个警报,但也没有发生。我做错了什么?

最佳答案

有很多事情,你都做错了,

首先,您在单击复选框时调用了 onCheck() 函数,但没有这样的 JavaScript 函数。您可以使用 onSelect(id) 来代替。

第二,您正在尝试.getElementById您的TD,因为这些ID“image1”都是tds的ID,而不是imgs

然后您正在为它们访问.src,所以无论如何这是错误的。

改进:

  1. 将您的输入复选框更改为:

     <input type="checkbox" name="Row1" value="Row1"  onchange="onCheck(this);">
    

您正在做的是,您在函数 onCheck(this); 中传递输入的引用;

2。现在像这样更改您的标记:

     <td>
            <form>
                <input type="checkbox" name="Row1" value="Row1"  onchange="onCheck(this);">
            </form>     
        </td>
        <td>
            Item
        </td>
        <td >
            <img  id="image1" src="yes.png" alt="Needed">
        </td>
        <td >
            <img id="image2" src="yes.png" alt="Needed">
        </td>
        <td >
            <img  id="image3" src="no.png" alt="Needed">
        </td>   
    </tr>

我所做的就是向正确的元素(即 IMG,而不是 TD)提供 ID;

第三,让你的 onCheck() 像这样:

function onCheck(cb)
         {
            if(cb.checked===true)
            {
                if(document.getElementById('image1').src.toString().indexOf('yes')>0){
                    document.getElementById('total1').innerHTML='555';
                } 
                else
                {
                    document.getElementById('total1').innerHTML='No';
                }

                if(document.getElementById('image2').src.toString().indexOf('yes')>0){
                    document.getElementById('total2').innerHTML='555';
                } 
                else
                {
                    document.getElementById('total2').innerHTML='No';
                }

                if(document.getElementById('image3').src.toString().indexOf('yes')>0){
                    document.getElementById('total3').innerHTML='555';
                } 
                else
                {
                    document.getElementById('total3').innerHTML='No';
                }  
            }
        }

所以基本上 onCheck 与你的 onCheck 几乎相同。

现在,看看这个工作 fiddle ,我已经为你做了,它有效。当然,我讨厌你做这一切的方式。这一切都可以通过更简单的方式完成。

另外,了解 jQuery ,它让生活变得轻松。

关于javascript - 尝试制作一个 html 复选框,将数字添加到输出字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15326034/

相关文章:

javascript - Highcharts 如何根据点数创建图例

html - 确认消息不起作用

html - 当行内显示不起作用时,行内显示 <div>

javascript - Jquery方法捕获嵌套div内的复选框点击

javascript - 除非我警告变量,否则我的事件将无法正常工作?为什么?

javascript - 在 Vuejs 中过滤来自不同数组的数组值时出现问题?

javascript - 从mysql表中获取密码

javascript - 如何控制页面加载工作流程

c# - 为 asp :checkbox 分配一个值(或任何其他参数)

css - 浏览器无法识别 FontAwesome 的图标