根据我研究的内容,该功能应该能够检测输入是否为空以及是否按下“取消”。但是,只有前两项工作正常,每当我点击“取消”时,都没有任何反应。
我发布了整个功能代码,但问题在于if-else
语句。我已经在IE7,Chrome和Firefox上测试了这个。
JavaScript的:
function countStrings()
{
var sequence = [];
sequence = window.prompt( "Enter a sequence of values", "a 1 b 2" ).split( " " );
if ( sequence[ 0 ] === "" )
{
// user pressed OK or Return; input is empty
}
else if ( sequence )
{
// user pressed OK or Return; input not empty.
}
else
{
// User pressed Cancel; not being detected/not working.
// Nothing happens.
}
}
HTML:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="UTF-8">
<title>Practice</title>
<script type = "text/javaScript" src="./practice.js"></script>
</head>
<body id="beach_ready">
<h1>Practising JavaScript functions</h1>
<p>
<input id="f" type="button" value="Function" onclick="countStrings();" />
Click to the count number of strings in an array
</p>
</body>
</html>
答案 0 :(得分:2)
var sequence=window.prompt();
if (sequence===""){
//then I entered nothing and pressed OK
} else
if (sequence===null){
//then I pressed cancel.
} else {
//then I entered something good. process it
//..rest of your code...
}
回答你的问题:
null.split(" ");
会导致错误,因为您无法调用null
上的任何方法,因为它的null
并且不是对象,也没有调用方法。
所以当这一行发生时
sequence = window.prompt( "Enter a sequence of values", "a 1 b 2" ).split( " " );
并且用户按下取消,这将评估为sequence = null.split(" ")
并且您的脚本会爆炸。因此,您需要首先获取值,看看它是什么,然后在您确定这样做之前不要调用它。像这样:
var sequence, sequenceInput;
sequenceInput = window.prompt( "Enter a sequence of values", "a 1 b 2" );
if ( sequenceInput=== "" )
{
// user pressed OK or Return; input is empty
}
else if ( sequenceInput===null )
{
// user pressed cancel
}
else
{
//user entered something
sequence=sequenceInput.split(" ");
}