脚本说未定义

时间:2011-11-22 01:47:20

标签: javascript

我有这个脚本可以让用户输入一个文本,它会被翻译成其他东西。它仅在单词只有1个字母时才有效。如果有超过1个字母,则表示未定义。

这是脚本:

function copyit(theField) {
    var tempval = eval("document." + theField)
    tempval.focus()
    tempval.select()
    therange = tempval.createTextRange()
    therange.execCommand("Copy")
}

function results() {
    var behavior = "form";
    var text = document.csrAlpha.csrresult2.value;
    var ff22 = text.toLowerCase();
    var Words = new Array;
    Words["b"] = "Dadada";
    Words["bob"] = "Robert";
    Words["flower"] = "Banana";
    Words["brad"] = "Chair";
    var trans = "";
    var regExp = /[\!@#$%^&*(),=";:\/]/;
    var stringCheck = regExp.exec(ff22);
    if (!stringCheck) {
        if (ff22.length > 0) {
            for (var i = 0; i < ff22.length; i++) {
                var thisChar = ff22.charAt(i);
                trans += Words[thisChar] + " ";
            }
        } else {
            trans += "Please write something.";
        }
    } else {
        trans += "You entered invalid characters. Remove them and try again.";
    }
    document.csrAlpha.csrresult.value = trans;
}

HTML:

<table>
  <tr>
    <td align="center" class="cleanuphtml-1">
      <form name="csrAlpha">
        Please insert your text below:<br />
        <input type="text" class="tb3" name="csrresult2" size="70" maxlength="120" autocomplete="off" onkeydown="results()" onkeyup="results()" onkeypress="return handleEnter(this, event);" />
        <input type="reset" value="Reset" onclick="csrAlpha.csrresult2.focus();" />

        <p>
          <textarea name="csrresult" class="tb7" cols="71" rows="10" value=""></textarea>
        </p>
      </form>
    </td>
  </tr>
</table>

2 个答案:

答案 0 :(得分:0)

如果单词不在您的数组中,那么您将得到未定义。如果您输入“Bo”,那么您将得到未定义,因为“Bo”不在您的数组中。

您正在使用KeyPress事件调用脚本。如果用户试图键入Bob,则会发生这种情况。

b - b在数组中,没问题

bo-bo不在数组中,所以未定义

bob - javascript炸弹爆炸,所以你不能做到这一点。

答案 1 :(得分:0)

我不知道你从哪里复制过这个,或者为什么你甚至考虑这样做。

这是一个更好的实现。下次请在依赖他人之前做一些研究。

HTML部分

        <table>
          <tr>
            <td align="center" class="cleanuphtml-1">
              <form name="csrAlpha">
                Please insert your text below:<br />
                <input type="text" class="tb3" name="csrresult2" id="csrresult2" size="70" maxlength="120" autocomplete="off" onkeyup="translate()" />
                <input type="reset" value="Reset" onclick="csrAlpha.csrresult2.focus();" />

                <p>
                  <textarea name="csrresult" id="csrresult" class="tb7" cols="71" rows="10" value=""></textarea>
                </p>
              </form>
              </td>
        </tr>
    </table>

和JS部分:

<script>
    var Words = {
        "b" : "Dadada",
        "bob" : "Robert",
        "flower" : "Banana",
        "brad" : "Chair"
    }


    function translate(){
        text = document.getElementById("csrresult2").value.toLowerCase();

        if(typeof Words[text] != "undefined")
            document.getElementById("csrresult").value=Words[text];
        else
            document.getElementById("csrresult").value="Text not found!";
    }
</script>