我有一个输入字符串("A Name")的提示。关于我if/else
发言if
部分。当执行完成并输入字符串时,它会执行它应该执行的操作。
但是,在实际语句中if(x === null)
单击cancel
按钮时不会发生任何情况。我认为这是因为"y"变量下的内容。
JAVASCRIPT:
<script>
var x = prompt('Enter a name');
var y = x.charAt(0).toUpperCase() + x.slice(1).toLowerCase();
if(x === null){
document.getElementById("name_placement").innerHTML = "Welcome to My Site!";
}
else
{
document.getElementById("name_placement").innerHTML = "Hello " + y + ", Welcome To My Site";
}
您的问题是,当x
具有值时 null
,正如您对取消按钮情况所期望的那样,语句
var y = x.charAt(0).toUpperCase() + x.slice(1).toLowerCase();
将引发异常 - 您不能在 null
上调用这些方法。该异常会破坏脚本并阻止其显示任何内容。检查错误控制台。
你必须把它移到你的 else 块中,只有在x
是一个字符串时才执行它:
var x = prompt('Enter a name');
if (x === null) {
document.getElementById("name_placement").innerHTML = "Welcome to My Site!";
} else {
var y = x.charAt(0).toUpperCase() + x.slice(1).toLowerCase();
document.getElementById("name_placement").innerHTML = "Hello " + y + ", Welcome To My Site";
}
你可以这样做
var x = prompt('Enter a name');
var y = (x) ? x.charAt(0).toUpperCase() + x.slice(1).toLowerCase() : '';
alert(x === null ? "Welcome to My Site!" : "Hello " + y + ", Welcome To My Site");
如果您还希望它处理空字符串,例如如果有人只按 OK 而不输入任何字符,请将x === true
更改为!x
var x = prompt('Enter a name');
var y = (x) ? x.charAt(0).toUpperCase() + x.slice(1).toLowerCase() : '';
alert(!x ? "Welcome to My Site!" : "Hello " + y + ", Welcome To My Site");
如果您不输入任何内容prompt
将返回一个空字符串''
,如果您单击取消按钮x
将等于null
,因此在这两种情况下,您都会得到 falsy 值,您可以使用 if(x)
而不是 if(x === null)
来处理该值。
同时操作块if(x)
x
值。
当用户按"取消"时x
为空
当用户按"确定"时x
为空字符串
问题是您无法设置y
何时x
null
var x = prompt('Enter a name');
if(x===null || x==='' )
{
document.getElementById("name_placement").innerHTML = "Welcome to My Site!";
}
else
{
var y = x.charAt(0).toUpperCase() + x.slice(1).toLowerCase();
document.getElementById("name_placement").innerHTML = "Hello " + y + ", Welcome To My Site";
}
<div id="name_placement"></div>