使用递归输入到输入的反向数字

时间:2017-05-26 07:52:58

标签: javascript

我想从输入字段反转数字,数字不能为零。 通过按钮单击我想将结果显示为div元素。

我的代码中有错误:

  

str.substr不是一个函数       在HTMLButtonElement.reverse

我做错了什么?

这是我的代码:

HTML:

<input type="text" id="input">
    <button id="btn">Check</button>
    <div id="result"></div>

JavaScript的:

window.onload = function() {

        var btn = document.getElementById("btn");
        var str = document.getElementById("input").value;
        var result = document.getElementById("result");

        function reverse(str) {

            if (str === "0") {
                return result.innerHTML = "Number cannot consist 0";
            } else {
                  return result.innerHTML = reverse(str.substr(1)) + str.charAt(0);     
            }
        }

        btn.addEventListener("click", reverse);
    }

1 个答案:

答案 0 :(得分:2)

问题是您没有从按钮点击的输入中获取最新值。在页面加载时,输入值为null。因此它会引发错误。

试试这个:

function handleClick() {
  var str = document.getElementById("input").value;
  var result = document.getElementById("result");

  if (str.indexOf("0") >= 0) {
    result.innerHTML = "Number cannot consist 0";
  } else
    result.innerHTML = reverse(str)
}

btn.addEventListener("click", handleClick);

window.onload = function() {
  var btn = document.getElementById("btn");

  function reverse(str) {
    if (str.length > 1)
      return reverse(str.substring(1)) + str.charAt(0)
    else
      return str
  }

  function handleClick() {
    var str = document.getElementById("input").value;
    var result = document.getElementById("result");

    if (str.indexOf("0") >=0) {
      result.innerHTML = "Number cannot consist 0";
    }
    else
      result.innerHTML = reverse(str)
  }

  btn.addEventListener("click", handleClick);
}
<input id="input" type="text">
<div id="result"></div>

<button id="btn">Reverse</button>