4

很抱歉提前提出新问题!我正在用 Javascript 制作一个计算器应用程序,并且很难使用“C”(清除)按钮来清除该字段。编辑:澄清一下,清除按钮不仅应该清除字段,还应该清除内存中的所有内容,以便我可以开始新的计算。<input type="reset" value="C"/>清除该字段,但保留我在内存中按下的最后一个按钮。

    <script>
      input = "";

      function handleClick(data) {

        input += data;
        document.getElementById("output").value = input;
        console.log(input);
      }

      function evaluateExpression(data) {
        input = document.getElementById("output").value = eval(input);
      }

      function clear(data) {
        input = data;
        input = document.getElementById("output").reset(); 
        console.log(input);
      }

    </script>

    <div id="calculator">

      <form>
        <input type="text" id="output" />
      </form>

      <button onclick="handleClick(1)">1</button>
      <button onclick="handleClick(2)">2</button>
      <button onclick="handleClick(3)">3</button>
      <button onclick="handleClick(4)">4</button>
      <button onclick="handleClick(5)">5</button>
      <button onclick="handleClick(6)">6</button>
      <button onclick="handleClick(7)">7</button>
      <button onclick="handleClick(8)">8</button>
      <button onclick="handleClick(9)">9</button>
      <button onclick="clear(0)">C</button>
      <button onclick="handleClick('+')">+</button>
      <button onclick="handleClick('-')">-</button>
      <button onclick="handleClick('/')">/</button>
      <button onclick="handleClick('*')">*</button>
      <button onclick="evaluateExpression()">=</button>
    </div>

“清除”功能只是不想工作。我哪里错了?

4

8 回答 8

7

在表单上进行重置。关联

document.getElementById("frm").reset();

或像这样设置文本框的值

 document.getElementById('output').value = "";
于 2013-04-24T17:40:19.390 回答
3

为什么不只使用内置reset类型?

<input type="reset" value="C"/>

这必须在<form>.

于 2013-04-24T17:38:43.447 回答
2

对于重置表单输入字段,这对我有用:

 document.getElementById('elementId').value = "";

如果您尝试重置页面上不是表单的元素,这对我有用:

 document.getElementById('elementId').innerHTML = "";
于 2020-10-08T15:19:27.453 回答
1

这是清除输入字段值的示例

<input id="entry" type="text"></input>
<button id="clear">Clear</button>

var entry = document.getElementById("entry"),
    clear = document.getElementById("clear");

function clearfield() {   
    // EDIT: place code for clearing anything else that would be affected here
    entry.value = "";
}

clear.addEventListener("click", clearfield, false);

jsfiddle上

这是使用form.reset的示例

<form id="myForm">
    <input id="entry" type="text"></input>
</form>
<button id="clear">Clear</button>

var clear = document.getElementById("clear"),
    form = document.getElementById("myForm");

function clearfield() {
    // EDIT: place code for clearing anything else that would be affected here
    form.reset();
}

clear.addEventListener("click", clearfield, false);

jsfiddle上

此外,内联 javascript 被认为是不好的做法,您应该考虑使用诸如addEventListener之类的方法。

IEonclick="doit();"

为什么要使用 addEventListener?

addEventListener 是注册 W3C DOM 中指定的事件侦听器的方法。它的好处如下:

它允许为事件添加多个处理程序。这对于即使使用其他库/扩展也需要正常工作的 DHTML 库或 Mozilla 扩展特别有用。当侦听器被激活时,它可以让您对阶段进行更细粒度的控制(捕获与冒泡)它适用于任何 DOM 元素,而不仅仅是 HTML 元素。

于 2013-04-24T17:43:22.680 回答
1

你不能只将输出文本设置为空白字符串吗?

( 或者 )

如果您使用计算器将其设置为 0,则更有可能?

document.getElementById("output").value = 0;
于 2013-04-24T17:41:04.090 回答
1

你想这样做吗?

然后试试这段代码,

function clear(data) {
         document.getElementById("output").value=data; 
      }
于 2013-04-24T17:45:12.080 回答
0

点击 C 按钮,清除输出值

 document.getElementById('output').value = "";
于 2013-04-24T17:44:29.367 回答
-1
 $(function(){
    $("input").click(function(){
        if(this.value == 0)
        {
            this.value='';
            return;
        }
        else
        {
            return;
        }
    });
});

将“输入”改为#YourFieldId,去掉里面的if,但保留this.value='';

如果您可以使用 jquery,那是清除单击字段的最佳方法...

您还可以始终有条件检查输入,然后像上面的代码一样清除其中包含“0”的输入字段。

于 2013-07-02T22:21:14.887 回答