2014-05-05 86 views
0

對於下面的代碼獲得價值:保持文本輸入

<script> 
var text = document.form.text.value; 
function test() { 
    if(text == "" || text == null){ 
     alert('No value'); 
     return false 
    }else{ 
     alert(text); 
     } 
}; 
</script> 
<form> 
<input type="text" name="text" id="text_one"/> 
</form><a id="button" onClick="test();">Enter</a><br /> 
<div id="title_box"></div> 

爲什麼它一直提醒「沒有價值」,即使事情已經寫的嗎?並且必須做些什麼以便每次輸入新值時,函數都會得到新值而不是舊值?

+2

當頁面加載沒有數值時,您正在讀取該字段的值。每當用戶單擊按鈕時,您都必須讀取該值。 –

回答

0

因爲您可能已形式結束標記</form>後移動腳本塊,或你必須把變量的代碼腳本塊內可以在window.onload

window.onload = function(){ 
    var text = document.form.text.value; 
} 

function test() { 
    if(text == "" || text == null){ 
     alert('No value'); 
     return false 
    }else{ 
     alert(text); 
     } 
}; 

<form> 
<input type="text" name="text" id="text_one"/> 
</form> 

<script> 
var text = document.form.text.value; 
function test() { 
    if(text == "" || text == null){ 
     alert('No value'); 
     return false 
    }else{ 
     alert(text); 
     } 
}; 
</script> 

<a id="button" onClick="test();">Enter</a><br /> 
<div id="title_box"></div> 

說明:該函數正確,但在創建DOM之前初始化文本變量,因此它將包含未定義的值。這就是爲什麼你必須通過將腳本代碼的形式後後初始化的DOM被加載,或可以在window.onload

0

初始化它試試這個代碼...有幾個變化:

<script> 
    var text = document.forms.myForm.text.value.trim(); 
    function test() { 
     if(text == "" || !text){ 
      alert('No value'); 
      return false; 
     } else { 
      alert(text); 
     } 
    } 
</script> 
<form id="myForm"> 
<input type="text" name="text" id="text_one"/> 
</form> 

總結:

  1. 缺少的功能分號返回false後才
  2. 讓表單的ID
  3. 文字空值是艾菲用trim()和!內部函數(這裏!文本)
2
function test() { 
    text = document.forms[0].text.value; 
    if(text == "" || text == null){ 
     alert('No value'); 
     return false; 
    }else{ 
     alert(text); 
     } 
}; 

將文本變種。另外,請注意使用document.forms [0],或者提供表單名稱/ ID,如建議。