我是尝试一些基本Javascript的初学者。 我的目标是显示(1.)提示消息(请求名称),然后根据提示输入显示(2.)警报。如果提示输入的是有效名称(字符串),则将出现一个警告框,其中包含文本“谢谢” +名称。否则,警报应显示为文本“您未输入有效名称”。
1。提示消息起作用,但是,无论输入名称/文本还是数字,2.警报消息都显示相同的文本。换句话说,警报消息不会区分字符串或数字,而是始终显示文本“谢谢” +名称。
这是我的代码:
function EnterName() {
var name = prompt("Enter your name here:");
if (typeof name === "string") {
alert("thank you " + name);
} else if (typeof name === "number") {
alert("you didn't enter a valid name");
}
}
console.log(EnterName());
在提示框中输入数字后,如何使警报框显示“您没有输入有效名称”,我们将不胜感激。
谢谢。
答案 0 :(得分:1)
提示总是返回一个字符串,您可以尝试将其转换为数字,然后检查它是否为NaN,这表示它是字符串。不过最好在这里使用正则表达式。如果您正在登录,则可能还需要返回名称。
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());
答案 1 :(得分:0)
您总是在提示中输入字符串。因此,您可以尝试在下面将其设置为int,如果成功,则给出错误消息,否则打个招呼。
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);
}
}
答案 2 :(得分:0)
提示方法参数类型始终为String
,无论您输入什么,您的条件始终为true:
//text & defaultText types are String
`prompt(text, defaultText)`
因此,您需要更改条件。一种解决方案是使用regex,例如,您可以将代码更改为此:
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+$/)
将检查输入的数据是否为数字,并以此为基础显示警报消息。
答案 3 :(得分:0)
因此,我要强调的一件事是您如何解决这个问题。您正在思考问题,“如果输入数字,这应该是错误的!为什么它不起作用?!”。之所以这样,是因为提示符将始终返回键入const result = await MemoryCard.aggregate([
{$match: {'updatedAt': {
$gte: d,
$lte: new Date(),
}}},
{
$lookup: {
from: 'users',
localField: 'owner',
foreignField: '_id',
as: 'owner',
},
},
{$unwind: '$owner'},
{$unwind: '$profiles'},
{$match: {
'progress.createdAt': {
$gte: d,
$lte: new Date(),
},
'progress.file_one': {$eq: true},
'progress.file_two': {$eq: true},
}},
{$unwind: '$progress'},
{
$group: {
'_id': '$_id',
'owner': {$first: '$owner'},
'progress': {$addToSet: '$progress'},
'profiles': {$last: '$profiles'},
},
},
{
'$project': {
'owner.email': '$owner.email',
'owner.username': '$owner.username',
'progress': '$progress',
'profile': '$profiles',
},
},
]);
的值。您正在查看是否有string
或number
,具体取决于语言。
因此,我们可以将其分为两个问题。看看这个家伙是否是一个字符串,看看那个字符串是否包含数字
下面的代码显示了使用两个函数来实现此目的的好方法
int
所以我们有我们的主要功能,它接收提示,提示总是返回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");
}
}
string
我们的第二个函数// this solves problem 2, seeing if we have a number inside of our string
function checkIfContainsNumber(myString) {
return /\d/.test(myString);
}
enterName();
使用匹配数字的正则表达式来解决问题的第二部分(在这种情况下为checkIfContainsNumber
)