2011-04-23 40 views
2

老實說。我是日本一所學校的老師,而且我沒有太多編程背景。我比其他任何事情都要多花點心思,但我認爲嘗試製作一個英文名字生成器,讓孩子們可以用來進行一項活動可能很有趣。該程序工作得很好,如果我有它返回結果作爲警報,但我真正想要做的是更新textarea的值,以便它反映生成的名稱,而不是「你的名字在這裏」。我一直在爭論幾個小時,不太明白爲什麼我沒有工作,因爲我看到的許多動態更改textarea值的解決方案都提供了相同的建議,即將其更改爲如下。每次我更新textarea的值時,都會因爲某種原因被覆蓋,默認值爲

function someFunction() 
{ 
    var x=document.getElementById("id for textarea") 
    x.value = "new value" 
} 

警告:手工編碼,並可能有錯誤造成。

<script type="text/javascript"> 
    function name_gen() 
    { 
     var randomNum; 
     var form = document.getElementById("nameGenForm"); 
     var result = document.getElementById("nameSpace"); 

     var boyNames = new Array("Adam", "Ben", "Cory", "David", "Eric", "Frank", "George", 
           "Harry", "Isaac", "James", "Kevin", "Lance", "Matthew", 
           "Nathan", "Patrick", "Quincy", "Ryan", "Sean", "Terrance", 
           "Vincent", "William", "Xavier", "Zach"); 

     var girlNames = new Array("Alice", "Beth", "Catherine", "Danielle", "Erika", "Holly", 
            "Isabelle", "Jenny", "Kristen", "Lisa", "Mary", "Naomi", 
            "Patricia", "Quinn", "Rhianna", "Sarah", "Tiffany", "Wendy"); 

     if (form.male.checked == true) 
     { 
      randomNum = Math.floor(Math.random()*boyNames.length); 
      name = boyNames[randomNum]; 
     } 
     else if (form.female.checked == true) 
     { 
      randomNum = Math.floor(Math.random()*girlNames.length); 
      name = girlNames[randomNum]; 
     } 
     else 
     { 
      alert("Please make a selection."); 
      return false; 
     } 

     alert(name); 
     //result.value = name; 
    } 
</script> 

這裏是隨附的HTML。

<form id="nameGenForm" action="" method="post"> 
    <fieldset> 
     <legend>Random Name Generator</legend> 
     <input id="male" name="sex" type="radio" /> 
     <label for="male">Male</label> 
     <input id="female" name="sex" type="radio" /> 
     <label for="female">Female</label><br /> 
     <input type="submit" value="Generate" onclick="name_gen();" /> 
    </fieldset> 
</form> 
<div id="textArea"> 
    <textarea rows="1" cols="20" id="nameSpace" readonly>Your Name Here</textarea> 
</div> 
+0

+1對於你是非常誠實的:) – Anji 2011-04-23 04:14:51

回答

1

問題是你的按鈕是type="submit"。如果您將其更改爲type="button",它將起作用。提交按鈕提交頁面,在這種情況下返回到同一頁面,但它具有重置爲默認值的結果。

+0

這正是我所需要的。萬分感謝。 – Steve 2011-04-23 04:18:24

+1

太好了...(順便說一句,我以前在中國教英語,現在還住在中國)。僅供參考,對於數組(數組文字),JavaScript有另一種更簡單的語法,所以你可以做,例如'var girlNames = [「Alice」,「Beth」,.. etc ......];' – 2011-04-23 04:24:28

0

它看起來像你的問題是,你有var x=getElementById('id for textarea")你應該有var x= document.getElementById("id for textarea");

而且,它不是.value.innerHTML

所以這第一個片段應該是

function someFunction() 
{ 
    var x = document.getElementById("id for textarea") 
    x.value = "new value" //per @Tomalak's comment 
} 

+1 - 只是在它涉足了相當不錯的!

+0

他的第一個代碼片段是關於建議的僞代碼。你說得對,因爲它包含了所提到的語法錯誤,但是他實際使用的代碼位於第二個片段中,並且不包含此錯誤。因此,這不太可能是問題所在。 – 2011-04-23 04:08:52

+0

@Tomalak Geret'kal是的,但從問題標題看來,他的問題是與第一個片段,因爲他說,警報版本工作正常。 – chromedude 2011-04-23 04:10:31

+0

@chromedude:他嘗試的代碼在第二個片段中註釋掉。並且['.value'是首選](http://stackoverflow.com/questions/5314186/javascript-get-textarea-input-via-value-or-innerhtml)。 – 2011-04-23 04:12:08

相關問題