将表单输入更改为 JavaScript 提示符

Changing form input to JavaScript prompt

我有一个函数可以检查在文本输入中输入的单词是否是回文:

function Palindrome() {
  var revStr = "";
  var str = document.getElementById("str").value;
  var i = str.length;
  for (var j = i; j >= 0; j--) {
    revStr = revStr + str.charAt(j);
  }
  if (str == revStr) {
    alert(str + " is a palindrome");
  } else {
    alert(str + " is not a palindrome");
  }
}
<form>
  Enter a String or Number:
  <input type="text" id="str" name="string" />
  <br />
  <input type="submit" value="Check" onclick="Palindrome();" />
</form>

我希望提示用户输入单词,而不是将单词输入文本输入,所以我更改了

var str = document.getElementById("str").value;

var str = prompt("Enter a string or number:")

但是提示没有触发。
为什么系统没有提示我输入字词?

您需要在脚本末尾调用 Palindrome()。目前,Palindrome 仅在您单击 submit:

时触发
<script type="text/javascript">
    function Palindrome() {
        var revStr = "";
        var str = prompt("Enter a string or number:")
        var i = str.length;
        for(var j=i; j>=0; j--) {
            revStr = revStr+str.charAt(j);
        }
        if(str == revStr) {
            alert(str+" is a palindrome");
        } else {
            alert(str+" is not a palindrome");
        }
    }
    Palindrome()
</script>

JSFiddle

如果您使用的是提示,则不需要该表格,还有一种快速递归的方法可以找到回文(尽管不如 Andy 引用的方法有效)。我将它添加到您的(工作版本)中仅供参考。 试试这个..

    function isPalindrome(x) {
        return x.length <= 1 ? true : (x.charAt(0) != x.charAt(x.length - 1) ? false : isPalindrome(x.slice(1, -1)))
    }

    function Palindrome(str) {

        var revStr = "";
       // var str = document.getElementById("str").value;
        var i = str.length;
        for(var j=i; j>=0; j--) {
            revStr = revStr+str.charAt(j);
        }

        if(str == revStr) {
            alert(str+" is a palindrome");
        } else {
            alert(str+" is not a palindrome");
        }
    }
    var str = prompt("Enter a string or number:")
    Palindrome(str)
    if (isPalindrome(str)){
        alert('isP: ' +str+" is a palindrome");

    } else{
        alert('isP: ' +str+" is not a palindrome");

    }