【问题标题】:How do i make my reset function work on my input element?如何使我的重置功能在我的输入元素上工作?
【发布时间】:2019-11-20 07:29:05
【问题描述】:

我有一个重置函数,它选择输入的 id。

我有一个按钮,点击时会触发该功能。

我哪里错了?我想可能是因为我的输入不在表单中,我需要创建一个表单并给它一个 id 以供参考。但这也没有用。

我也尝试过使用 document.getElementById.("reset").reset();

这也没有用。

我迷路了!

function clearInputs(){
document.getElementById("reset").value = "";
}

     <div class="container">

    <div class="cell-1" id="centerElement">
        <div id="cell-1-nest-l"></div>
        <div id="cell-2-nest-l"></div>
        <div id="cell-3-nest-l"></div>
        <div id="cell-4-nest-l"><h3>your name</h3></div>
        <div id="cell-5-nest-l"></div>
        <div id="cell-6-nest-l"><input type="text" class="nameStyle1" id="nameInput1" class="reset"></div>

    <div class="cell-2" id="centerElement" ><img onclick="getSum();" src="file:///Users/Nineborn/Downloads/My%20Post%20(5).png" alt=""></div>

    <div class="cell-3" id="centerElement" >
            <div id="cell-1-nest"></div>
            <div id="cell-2-nest"></div>
            <div id="cell-3-nest"><h3>their name</h3></div>
            <div id="cell-4-nest"></div>
            <div id="cell-5-nest"><input type="text" class="nameStyle1" id="nameInput2"></div>
            <div id="cell-6-nest"></div>


            </div>

    <div class="cell-4" id="result1">
        <input type="date" class="dateStyle1" id="dateInput1">
            </div>

    <div class="cell-5"><input type="button" value="Reset" onclick="clearInputs();"></div>

    <div class="cell-6" id="result2"> 
        <input type="date" class="dateStyle2" id="dateInput2" placeholder="Their Bday">
            </div>
    <div class="cell-7"></div>

    <div class="cell-8"></div>

    <div class="cell-9"></div>

【问题讨论】:

  • 输入的“id”是“nameInput1”和“nameInput1”,而不是“reset”。
  • 使用:&lt;input type="reset" value="Reset"&gt; 这将重置表单标签内的所有值。
  • 正确,但没有表单标签。另外,我实际上并不清楚这个问题,但我想要一个按钮来删除我的所有输入。我有两个日期输入和两个文本输入。在我想办法选择所有元素之前,我只是想弄清楚如何至少让按钮在单个元素上工作。
  • 只需将所有代码包装在表单标签中。它不会改变任何东西。并使用&lt;input type="reset" value="Reset"&gt;
  • 问题是,我的 CSS 正在使用网格。所以这个特定的输入是在一个嵌套的网格项中。它在 9 个单元格中的第 1 个网格单元格中。问题是,我想最终选择所有输入(有 4 个,两个日期输入和两个文本输入)并使用一个按钮将它们休息。所以输入类型“reset”在这里对我不起作用,因为它只适用于一个输入。

标签: javascript html css function input


【解决方案1】:

在开始编写代码之前:如果要将表单的字段重置为其初始值,则根本不需要编写任何代码。只需在表单中使用input type="reset"

<input type="reset" value="Reset">

<form>
<div class="container">

        <div class="cell-1" id="centerElement">
            <div id="cell-1-nest-l"></div>
            <div id="cell-2-nest-l"></div>
            <div id="cell-3-nest-l"></div>
            <div id="cell-4-nest-l"><h3>your name</h3></div>
            <div id="cell-5-nest-l"></div>
            <div id="cell-6-nest-l"><input type="text" class="nameStyle1 reset" id="nameInput1"></div>
           
  </div>

        <div class="cell-2" id="centerElement" ><img onclick="getSum();" src="file:///Users/Nineborn/Downloads/My%20Post%20(5).png" alt=""></div>

        <div class="cell-3" id="centerElement" >
                <div id="cell-1-nest"></div>
                <div id="cell-2-nest"></div>
                <div id="cell-3-nest"><h3>their name</h3></div>
                <div id="cell-4-nest"></div>
                <div id="cell-5-nest"><input type="text" class="nameStyle1" id="nameInput2"></div>
                <div id="cell-6-nest"></div>
                
            
                </div>

        <div class="cell-4" id="result1">
            <input type="date" class="dateStyle1" id="dateInput1">
                </div>
                
        <div class="cell-5"><input type="reset" value="Reset""></div>
                    
        <div class="cell-6" id="result2"> 
            <input type="date" class="dateStyle2" id="dateInput2" placeholder="Their Bday">
                </div>
        <div class="cell-7"></div>

        <div class="cell-8"></div>

        <div class="cell-9"></div>
            

</div>
</form>

但是你的代码:

您的inputidnameInput1,而不是resetreset 是它的)。请改用该 ID:

document.getElementById("nameInput1").value = "";

或在课程中使用querySelector(如果只有一个)或querySelectorAll(如果有多个):

// If there will only ever be one
document.querySelector(".reset").value = "";

// If there will be more than one
document.querySelectorAll(".reset").forEach(function(input) {
    input.value = "";
});

如果您使用第二个选项,您可能需要在旧版浏览器上填充 forEach;我的answer here 展示了如何。

请注意,您的某些元素上有多个class=""。你不能这样做,除了第一个之外,所有的都被忽略了。如果您想在一个元素上使用多个类,请将所有类放在一个 class="" 中,并用空格分隔。

这是一个清除多个inputs 的示例,所有reset 类:

function clearInputs() {
    document.querySelectorAll(".reset").forEach(function(input) {
        input.value = "";
    });
}
 <div class="container">

<div class="cell-1" id="centerElement">
    <div id="cell-1-nest-l"></div>
    <div id="cell-2-nest-l"></div>
    <div id="cell-3-nest-l"></div>
    <div id="cell-4-nest-l"><h3>your name</h3></div>
    <div id="cell-5-nest-l"></div>
    <div id="cell-6-nest-l"><input type="text" class="nameStyle1 reset" id="nameInput1"></div>
<div class="cell-2" id="centerElement" ><img onclick="getSum();" src="file:///Users/Nineborn/Downloads/My%20Post%20(5).png" alt=""></div>

<div class="cell-3" id="centerElement" >
        <div id="cell-1-nest"></div>
        <div id="cell-2-nest"></div>
        <div id="cell-3-nest"><h3>their name</h3></div>
        <div id="cell-4-nest"></div>
        <div id="cell-5-nest"><input type="text" class="nameStyle1 reset" id="nameInput2"></div>
        <div id="cell-6-nest"></div>


        </div>

<div class="cell-4" id="result1">
    <input type="date" class="dateStyle1 reset" id="dateInput1">
        </div>

<div class="cell-5"><input type="button" value="Reset" onclick="clearInputs();"></div>

<div class="cell-6" id="result2"> 
    <input type="date" class="dateStyle2 reset" id="dateInput2" placeholder="Their Bday">
        </div>
<div class="cell-7"></div>

<div class="cell-8"></div>

<div class="cell-9"></div>

【讨论】:

  • 谢谢,我之前更正了,但还是不行!
  • 我将尝试使用 queryselctor 重写它,因为我实际上希望它适用于我的所有输入。在我的 HTML 中,我有两个日期输入和两个文本输入。
  • @nineborn - Yes, it does work。如果您想完成所有输入,请参阅答案的“如果会有多个”部分。
  • 哈哈好吧,我确定是这样,我只是想弄清楚我哪里出错了。我将使用 querySelectorAll("#reset") 并将“reset”类添加到该元素的 html 并对其进行测试。
  • 哎呀没有读完你的评论。好的,所以我需要在类标签中保留多个类。多哈。让我试试这个。
【解决方案2】:

document.getElementById("reset") 搜索一个似乎不存在的 id="reset" 元素,这就是为什么什么都不会重置。

如果您的 &lt;input&gt;&lt;form&gt; 中,您可以使用 &lt;input type="reset"&gt; 重置所有表单值 (https://www.w3schools.com/tags/att_input_type_reset.asp)

你可以试试

document.getElementById("nameInput2").value = ""; 

并查看它是否适用于该特定元素

【讨论】:

    【解决方案3】:
    <div id="cell-6-nest-l">
      <input type="text" class="nameStyle1" id="nameInput1" class="reset">
    </div>
    

    这里的类被重置,你使用的是getElementById("reset"),这是错误的。

    使用以下之一:

    document.getElementById("nameInput1").value = "";
    
    document.getElementByClass("reset").value = "";
    

    【讨论】:

      猜你喜欢
      • 2021-11-24
      • 2021-07-04
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多