Javascript 如何创建基于提示输入类型显示文本的警报弹出窗口?

Javascript 如何创建基于提示输入类型显示文本的警报弹出窗口?,javascript,Javascript,我是一个初学者,正在尝试一些基本的Javascript。 我的目标是根据提示输入显示(1.)提示消息(请求名称),然后显示(2.)警报。如果提示输入是有效的名称(字符串),则会出现一个警告框,文本为“谢谢”+名称。否则,警报应显示文本“您未输入有效名称” 1。提示消息正在工作,但是,2。无论我输入名称/文本还是数字,警报消息都会显示相同的文本。换句话说,警报消息不区分文本字符串或数字,始终显示文本“谢谢”+名称 这是我的代码: 函数EnterName(){ var name=prompt(“在

我是一个初学者,正在尝试一些基本的Javascript。 我的目标是根据提示输入显示(1.)提示消息(请求名称),然后显示(2.)警报。如果提示输入是有效的名称(字符串),则会出现一个警告框,文本为“谢谢”+名称。否则,警报应显示文本“您未输入有效名称”

1。提示消息正在工作,但是,2。无论我输入名称/文本还是数字,警报消息都会显示相同的文本。换句话说,警报消息不区分文本字符串或数字,始终显示文本“谢谢”+名称

这是我的代码:

函数EnterName(){
var name=prompt(“在此处输入您的姓名:”);
如果(名称类型==“字符串”){
提醒(“谢谢”+姓名);
}else if(名称类型==“编号”){
警报(“您没有输入有效的名称”);
}
}

log(EnterName())提示总是返回一个字符串,您可以尝试将其转换为一个数字,然后检查它是否在您身上,这意味着它是一个字符串。不过,最好在这里使用regexp。如果正在记录,您可能还希望返回名称

function EnterName() {
  var name = prompt("Enter your name here:");
  var isNum = !isNaN(Number(name));
  if (!isNum) {
    alert("thank you " + name);
  } else {
    alert("you didn't enter a valid name");
  }
  return name;
}
console.log(EnterName());

您总是在提示中输入字符串。因此,您可以尝试在下面将其设置为int,如果成功,则给出一条错误消息,否则就说hello

function EnterName() {
  var name = prompt("Enter your name here:");
  if(parseInt(name)) {
    alert("you didn't enter a valid name");
  }
  else if (!parseInt(name)) {
    alert("thank you " + name);
  }
}

提示方法参数类型始终为
String
,无论您输入什么,您的条件始终为true:

 //text & defaultText types are String
`prompt(text, defaultText)`
所以你需要改变你的状况。一种解决方案是使用,例如,您可以将代码更改为:

function EnterName() {
   var name = prompt("Enter your name here:");
   !name.match(/^\d+$/) ?
        alert("thank you " + name)
    :     
        alert("you didn't enter a valid name");
}
console.log(EnterName());
基本上
!name.match(/^\d+$/)
将检查输入数据是否为数字,并基于此显示警报消息


所以,我想强调的一点是,你们是如何解决这个问题的。当你看到你的问题时,你会想,“如果我输入一个数字,这应该是错误的!为什么它不起作用?!”。原因是prompt将始终返回键入
字符串的值。您正在查看是否有
数字
整数
,具体取决于语言

所以,我们可以把它分成两个问题。看看这家伙是不是一个字符串,看看这个字符串是否包含一个数字

下面的代码展示了使用两个函数实现这一点的好方法

function enterName() { // Javscript functions should always start with a lowercase unless it is a function express and can be invoked using the `new` keyword
  var name = prompt("Enter your name here:");
  if (!checkIfContainsNumber(name)) {
    alert("thank you " + name);
  } else { // if f we dont have a number, we have a valid name, otherwise we are invalid!
    alert("you didn't enter a valid name");
  }
}
所以我们有了我们的主函数,它接受promp,它总是返回一个
字符串

// this solves problem 2, seeing if we have a number inside of our string
function checkIfContainsNumber(myString) {
  return /\d/.test(myString);
}

enterName();
我们的第二个函数
checkIfContainsNumber
使用与数字匹配的正则表达式解决了问题的第2部分(
d