switch语句中的Javascript作用域
Javascript scope in switch statement
我是Javascript的新手,不理解以下行为。
-
当文本区域为空时,"进程"代码不会将其识别为null,也不会提示输入文本。
-
当文本区域中有文本时,"流程"代码不会在警报中显示文本。这似乎是一个范围问题,我认为我所有的变量都是全局的。
HTML代码:
<input type="button" name="btnProcessTA" onclick="myTextArea('process')" value="Process Text Area" />
<input type="button" name="btnClearTA" onclick="myTextArea('clear')" value="Clear Text Area" />
<form id="formExample" action="" method="get">
<label for="textAreaField">A text area field</label>
<textarea name="textAreaField" id="textAreaField" rows="4" cols="50"></textarea>
</form>
Javascript代码:
<script type="text/javascript">
function myTextArea(op)
{
oTextArea = document.getElementById("textAreaField");
textAreaValue = oTextArea.value;
alert(op + "'n" + oTextArea + "'n" + textAreaValue);
switch (op){
case "clear":
oTextArea.value = "";
alert("Clearing");
break;
case "process":
if (textAreaValue = "")
alert("Would you please enter some text?");
else
alert("You entered:'n'n" + textAreaValue);
break;
default : alert("unknown op code");
}
}
</script>
更改
if (textAreaValue = "")
至
if (textAreaValue === "") // or ==
您正在执行作业,而不是进行比较。
要进行比较,必须使用==
而不是=
:)
case "process":
if (textAreaValue == "")
alert("Would you please enter some text?");
else
alert("You entered:'n'n" + textAreaValue);
break;
if (textAreaValue = "")
if语句中的单等号被解释为赋值(它不会抛出错误,因为从技术上讲它是正确的语法,但许多人会因为使用单等号而不是双等号而犯这个错误)。如果您打算进行比较而不是赋值,那么正确的语法应该是三等号。
if (textAreaValue === "")
相关文章:
- 这两个关于 JavaScript 作用域链的例子有什么区别?
- Javascript作用域和Ajax调用;工作不正常
- switch语句中的Javascript作用域
- JavaScript作用域:如何创建具有不同值的匿名函数
- Javascript作用域规则和mongo-map/reduce函数
- Javascript作用域问题,对象在分配后没有数据
- 可能存在Javascript作用域问题
- 本地Javascript作用域问题
- 从另一个文件调用时出现Javascript作用域错误
- JavaScript 作用域和 Angular JS 作用域之间的区别是什么?
- JavaScript 作用域:在函数后保留全局变量值
- Javascript:作用域链/变量查找性能
- ES6中的JavaScript作用域已转换
- Javascript作用域意外结果
- 订阅服务器模式中的Javascript作用域
- 了解Javascript作用域和变量
- 绑定时出现Javascript作用域问题
- Javascript作用域链式吊装
- javascript作用域和jquery's$(文档).准备好了
- Javascript作用域问题:函数在$(doc).ready()中可用,但在事件处理程序中不可用