2011-11-22 63 views
-5

我有這個腳本,可以讓用戶輸入一個文本,它會被翻譯成別的東西。只有當單詞只有一個字母時才起作用。如果有超過1個字母,則表示未定義。腳本說undefined

下面是腳本:

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 = /[\[email protected]#$%^&*(),=";:\/]/; 
    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> 
+6

請你不要四倍空間的代碼? – Blender

+0

我的歉意,我現在就改變它。 – Strozzap

+3

不要試圖做人的意思;)這很難閱讀。 – Blender

回答

0

如果字是不是你的數組中,然後你會得到不確定的。如果你輸入「Bo」,那麼你會得到未定義,因爲「Bo」不在你的數組中。

您正在使用KeyPress事件調用腳本。如果用戶正在嘗試鍵入Bob,則會發生這種情況。

b - b爲陣,沒有問題

博 - 微博是不是在數組中,以便未定義

鮑勃 - 博會上的JavaScript炸彈這樣你就不會走到這一步。

+0

謝謝,那麼我該如何重寫那? – Strozzap

+0

Dany的帖子中的if語句將處理它。 –

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> 
+0

和Johnie是對的,我添加的將會輸出更多的信息錯誤 也確保你在你的html裏有類似於'或者相應地修改'fieldID' –

+0

嗨Dany,我一直在做我的研究2天,這就是爲什麼我試圖從一個比我更瞭解的社區獲得信息的原因。我嘗試了你的代碼,一旦我改變了你的建議,腳本就無法工作。 – Strozzap

+0

好吧,我給你的僅僅是讓你開始:)我會稍微修改我的答案,這樣你就可以與 –