我有提示输入字符串(“A Name”)。在if
语句的if/else
部分。当执行完成并输入一个字符串时,它会执行它应该执行的操作。
但是在实际声明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";
}
答案 0 :(得分:1)
您的问题是当x
的值为null
时,正如您对取消按钮的情况所期望的那样,语句
var y = x.charAt(0).toUpperCase() + x.slice(1).toLowerCase();
会抛出异常 - 您无法在null
上调用这些方法。该异常会破坏您的脚本并阻止它显示任何内容。检查您的error console。
你必须将它移到你的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";
}
答案 1 :(得分:0)
你可以这样做
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");
如果您还希望它处理空字符串,例如,如果有人只推送确定而不输入任何字符,请将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");
答案 2 :(得分:-1)
如果您输入任何内容''
将返回空字符串x
,如果您点击取消按钮null
将等于if(x)
,所以在这两种情况下您都会获取if(x === null)
值,您可以使用x
代替if(x)
来处理。
还操纵{{1}}块内的{{1}}值。
答案 3 :(得分:-1)
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";
}
&#13;
<div id="name_placement"></div>
&#13;