4

私はJavascriptが初めてで、次の動作を理解していません。

  1. textarea が空の場合、「プロセス」コードはそれを 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>
4

3 に答える 3

2

比較するには、 :)==の代わりに使用する必要があります=

case "process":
if (textAreaValue == "")
    alert("Would you please enter some text?"); 
else
    alert("You entered:\n\n" + textAreaValue);
break;
于 2012-08-28T19:12:11.927 に答える
2

変化する

if (textAreaValue = "")

if (textAreaValue === "") // or ==

比較を行う代わりに、割り当てを実行しています。

于 2012-08-28T19:12:23.780 に答える
0
if (textAreaValue = "")

ifステートメントの単一の等号は割り当てとして解釈されます(技術的には正しい構文であるためエラーはスローされませんが、多くの人は二重の等号の代わりに単一の等号を使用してこの間違いを犯します)。割り当てではなく比較する場合、正しい構文はトリプル等号になります。

if (textAreaValue === "")
于 2012-08-28T19:14:14.697 に答える