switch语句中的Javascript作用域

Javascript scope in switch statement

本文关键字:Javascript 作用域 语句 switch      更新时间:2023-09-26

我是Javascript的新手,不理解以下行为。

  1. 当文本区域为空时,"进程"代码不会将其识别为null,也不会提示输入文本。

  2. 当文本区域中有文本时,"流程"代码不会在警报中显示文本。这似乎是一个范围问题,我认为我所有的变量都是全局的。

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 === "")