简体   繁体   English

如何使用 javascript 获取多个输入值

[英]How can i get multiple input values with javascript

I tried to code a student manager like below.我试着编写如下的学生经理代码。 But when i ran my code in web there seem something error that i dont understanding.但是当我在 web 中运行我的代码时,似乎出现了一些我不理解的错误。 I can't get input value from gender and language.我无法从性别和语言中获得输入值。 When i check console to see something wrong in my code, just a blank.So i dont know why i can't get value when i didn't get any error from console.当我检查控制台发现我的代码有问题时,只是一片空白。所以我不知道为什么当我没有从控制台收到任何错误时我无法获得价值。 Because my english skill is not good so I can't explain my mistake.因为我的英语水平不好所以我无法解释我的错误。 i'm sorry for that.我为此感到抱歉。 Can someone help me.有人能帮我吗。 Thanks first enter image description here谢谢先在这里输入图片描述

 <table>
                        <form onsubmit="event.preventDefault();onFormSubmit();" autocomplete="off">
                            <div id="s1">
                                <label>Student Name:</label>
                                <input type="text" placeholder="Input student name"
                                    title="Please fill out this field" id="name" name="name">
                            </div>
                            <div id="s2">
                                <label>Student DOB:</label>
                                <input type="date" placeholder="dd-mm-yyyy" id="date" name="date">
                            </div>
                            <div id="s3">
                                <label>Student gender:</label>
                                <input type="radio" id="gender1" class="gender" name="gender">Male
                                <input type="radio" id="gender2" class="gender" name="gender">Female
                            </div>
                            <div id="s4">
                                <label>Student Language</label>
                                <input type="checkbox" id="lang1" class="lang" name="lang">English
                                <input type="checkbox" id="lang2" class="lang" name="lang">Vietnamese
                                <input type="checkbox" id="lang3" class="lang" name="lang">Japanese
                                <input type="checkbox" id="lang4" class="lang" name="lang">Chinese
                                <input type="checkbox" id="lang5" class="lang" name="lang">French
                            </div>
                            <div id="s5">
                                <label>Student Class:</label>
                                <select id="class" name="class">
                                    <option>C1608G</option>
                                </select>
                                <a href="#" id="add" onclick="">Add class</a>
                            </div>
                            <button id="bt">Add</button>
                        </form>
                        <br><br><br>
                        <h2><strong>Student List</strong></h2>
                        <br>
                        <table id="table" border="1">
                            <thead>
                                <tr>
                                    <th>Name</th>
                                    <th>Class</th>
                                    <th>DOB</th>
                                    <th>Gender</th>
                                    <th>Language</th>
                                </tr>
                            </thead>
                            <tbody>
                            </tbody>
                        </table>

Here is my javascript code这是我的 javascript 代码

    var selectedRow = null
    
    function onFormSubmit() {
        var formData = readFormData();
        // check empty row
        if (selectedRow == null) {
            // Insert New User Record
            insertNewRecord(formData);
        }
        else {
            // Update New User Record
            updateRecord(formData);
        }
        // Reset Input Values
        resetForm();
    }
    
    function readFormData() {
        var formData = {};
        // Get Values From  Input
        formData["name"] = document.getElementById("name").value;
        formData["class"] = document.getElementById("class").value;
        formData["date"] = document.getElementById("date").value;
        formData["gender"] = document.getElementsByClassName("gender").value;
        formData["lang"] = document.getElementsByClassName("lang").value;
        // return Form Data
        return formData;
    }
    
    function insertNewRecord(data) {
        var table = document.getElementById("table").getElementsByTagName('tbody')[0];
        var newRow = table.insertRow(table.length);
        cell1 = newRow.insertCell(0);
        cell1.innerHTML = data.name;
        cell2 = newRow.insertCell(1);
        cell2.innerHTML = data.class;
        cell3 = newRow.insertCell(2);
        cell3.innerHTML = data.date;
        cell4 = newRow.insertCell(3);
        cell4.innerHTML = data.gender;
        cell5 = newRow.insertCell(4);
        cell5.innerHTML = data.lang;
        cell5 = newRow.insertCell(5);
        cell5.innerHTML = '<a href="#" onClick="onDelete(this)" style="color: blue;">Delete</a>';
    }
    
    function updateRecord(formData) {
        selectedRow.cells[0].innerHTML = formData.name;
        selectedRow.cells[1].innerHTML = formData.class;
        selectedRow.cells[2].innerHTML = formData.date;
        selectedRow.cells[3].innerHTML = formData.gender;
        selectedRow.cells[4].innerHTML = formData.lang;
    }
    
    function resetForm() {
        document.getElementById("name").value = "";
        document.getElementById("class").value = "";
        document.getElementById("date").value = "";
        document.getElementsByClassName("gender").value = "";
        document.getElementsByClassName("lang").value = "";
        selectedRow = null;
    }
    function onDelete(td) {
        if (confirm('Are you sure to delete this record ?')) {
            row = td.parentElement.parentElement;
            document.getElementById("table").deleteRow(row.rowIndex);
            resetForm();
        }
    }
    function updateRecord(formData) {
        selectedRow.cells[0].innerHTML = formData.name;
        selectedRow.cells[1].innerHTML = formData.class;
        selectedRow.cells[2].innerHTML = formData.data;
        selectedRow.cells[3].innerHTML = formData.gender;
        selectedRow.cells[4].innerHTML = formData.lang;
    }

Two major problems you have in your code.您的代码中存在两个主要问题。

  1. Your radio/checkboxes need to have value s - your code cannot infer the text next to them as the value (without some additional coding and anyways that's not the right way to do it)您的单选框/复选框需要有value s - 您的代码无法将它们旁边的文本推断为值(没有一些额外的编码,无论如何这不是正确的方法)

  2. To check which radio is selected, you can use querySelector and the ?要检查选择了哪个无线电,您可以使用querySelector? flag.旗帜。 Here's what it looks like in your code after I've added it:这是我添加后它在您的代码中的样子:

    formData["gender"] = document.querySelector(".gender:checked")?.value || '';

Which is: document.querySelector(".gender:checked") finds the item with the class name 'gender' that is checked (the psuedo class :checked does that).这是: document.querySelector(".gender:checked")找到名称为 class 的项目 'gender' 被选中(psuedo class :checked这样做)。 If it doesn't exist (if there isn't an element with that class name or none of them are checked), the ?如果它不存在(如果不存在名称为 class 的元素,或者没有选中任何元素),则? flag captures that and instead a blank value is used. flag 捕获它,而是使用空白值。 (Otherwise it might throw an error or be undefined) (否则它可能会抛出错误或未定义)

To get all the checked checkboxes, you can use this kind of structure:要获取所有选中的复选框,您可以使用这种结构:

 formData["lang"] = []; 
      // creates the array
  document.querySelectorAll(".lang:checked").forEach(item => formData["lang"].push(item.value)); 
      // loops through each checked checkbox and gets it's value, adding it to the array
  formData["lang"] = formData["lang"].join(', ') 
      // this converts your array into a list that is comma separated. This line is optional because javascript will show your array as a comma separated list anyways

 var selectedRow = null function onFormSubmit() { var formData = readFormData(); // check empty row if (selectedRow == null) { // Insert New User Record insertNewRecord(formData); } else { // Update New User Record updateRecord(formData); } // Reset Input Values resetForm(); } function readFormData() { var formData = {}; // Get Values From Input formData["name"] = document.getElementById("name").value; formData["class"] = document.getElementById("class").value; formData["date"] = document.getElementById("date").value; formData["gender"] = document.querySelector(".gender:checked")?.value || ''; formData["lang"] = []; document.querySelectorAll(".lang:checked").forEach(item => formData["lang"].push(item.value)); formData["lang"] = formData["lang"].join(', ') // return Form Data return formData; } function insertNewRecord(data) { var table = document.getElementById("table").getElementsByTagName('tbody')[0]; var newRow = table.insertRow(table.length); cell1 = newRow.insertCell(0); cell1.innerHTML = data.name; cell2 = newRow.insertCell(1); cell2.innerHTML = data.class; cell3 = newRow.insertCell(2); cell3.innerHTML = data.date; cell4 = newRow.insertCell(3); cell4.innerHTML = data.gender; cell5 = newRow.insertCell(4); cell5.innerHTML = data.lang; cell5 = newRow.insertCell(5); cell5.innerHTML = '<a href="#" onClick="onDelete(this)" style="color: blue;">Delete</a>'; } function updateRecord(formData) { selectedRow.cells[0].innerHTML = formData.name; selectedRow.cells[1].innerHTML = formData.class; selectedRow.cells[2].innerHTML = formData.date; selectedRow.cells[3].innerHTML = formData.gender; selectedRow.cells[4].innerHTML = formData.lang; } function resetForm() { document.getElementById("name").value = ""; document.getElementById("class").value = ""; document.getElementById("date").value = ""; document.getElementsByClassName("gender").value = ""; document.getElementsByClassName("lang").value = ""; selectedRow = null; } function onDelete(td) { if (confirm('Are you sure to delete this record?')) { row = td.parentElement.parentElement; document.getElementById("table").deleteRow(row.rowIndex); resetForm(); } } function updateRecord(formData) { selectedRow.cells[0].innerHTML = formData.name; selectedRow.cells[1].innerHTML = formData.class; selectedRow.cells[2].innerHTML = formData.data; selectedRow.cells[3].innerHTML = formData.gender; selectedRow.cells[4].innerHTML = formData.lang; }
 <form onsubmit="event.preventDefault();onFormSubmit();" autocomplete="off"> <div id="s1"> <label>Student Name:</label> <input type="text" placeholder="Input student name" title="Please fill out this field" id="name" name="name"> </div> <div id="s2"> <label>Student DOB:</label> <input type="date" placeholder="dd-mm-yyyy" id="date" name="date"> </div> <div id="s3"> <label>Student gender:</label> <input type="radio" id="gender1" class="gender" name="gender" value="Male">Male <input type="radio" id="gender2" class="gender" name="gender" value="Female">Female </div> <div id="s4"> <label>Student Language</label> <input type="checkbox" id="lang1" class="lang" name="lang" value="English">English <input type="checkbox" id="lang2" class="lang" name="lang" value="Vietnamese">Vietnamese <input type="checkbox" id="lang3" class="lang" name="lang" value="Japanese">Japanese <input type="checkbox" id="lang4" class="lang" name="lang" value="Chinese">Chinese <input type="checkbox" id="lang5" class="lang" name="lang" value="French">French </div> <div id="s5"> <label>Student Class:</label> <select id="class" name="class"> <option>C1608G</option> </select> <a href="#" id="add" onclick="">Add class</a> </div> <button id="bt">Add</button> </form> <br><br><br> <h2><strong>Student List</strong></h2> <br> <table id="table" border="1"> <thead> <tr> <th>Name</th> <th>Class</th> <th>DOB</th> <th>Gender</th> <th>Language</th> </tr> </thead> <tbody> </tbody> </table>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Javascript:如何使用 javascript 在循环中计算多个输入值? - Javascript: how to get calculate multiple input values in loop using javascript? React - 如何从多个输入中获取值并将它们发送到我的输入? - React - How can I get the values from my multiple input and send them to my input? 如何使用Javascript获取多个输入字段的值 - How to get values of multiple Input fields using Javascript 如何从单个输入创建多个输入并在 javascript 中获取它们的值? - How to create multiple inputs from single input and get their values in javascript? 如何使用javascript在django循环(模板)中获取多个输入值? - how to get multiple input values in django loop (template) using javascript? 如何获取javascript对象中的值? - How can I get values in a javascript object? 如何使用javascript从输入字段中获取多个值 - How can i get multiple value from an input field using javascript Javascript:从 select 输入中获取多个值 - Javascript: Get multiple values from a select input "如何在 Javascript 中获取值更新\/刷新相关输入区域?" - How I get values updating/refreshing related input areas in Javascript? 我如何从表单提交的多个输入框中获取值并将这些值作为对象存储在React的状态数组中? - How can i get values from multiple input boxes on form submit and store the values as an object in an state array for React?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM