2012-07-14 61 views
0

我希望設置輸入類型的值,如果條件爲真,但我的功能不起作用。我寫了正確的代碼,但不知道它有什麼問題。如何使用javascript設置輸入值

<head> 
<script type="text/javascript"> 
function ghg(){ 
    var fname= document.getElementById('jitender').value; 
    if(fname=="") { 
    fname= "i am value"; 
    } 
} 
</script> 
</head> 

<body> 
    <input type="text" id="jitender" value="" /> 
    <input type='button' value="submit" onclick="ghg()"/> 
</body> 
+1

請刪除不必要的換行! – helle 2012-07-14 13:23:32

回答

1
function ghg(){ 
    var finp= document.getElementById('jitender'); 

    if(finp.value == "") { 
    finp.value = "i am value"; 
    } 
} 
+0

但爲什麼我的函數不工作有什麼不對 – Carlos 2012-07-14 13:29:31

+1

@amit,在你的函數中,fname不是指向字段值屬性的指針。 fname不是一個指針,它是一個字符串 – 2012-07-14 13:36:33

1

你已經嘗試過這樣的:

document.getElementById('jitender').value = "blaah" 
+0

爲什麼我的代碼不工作 – Carlos 2012-07-14 13:34:55

+0

因爲,javscript以這種方式工作。你沒有得到這個調用的完整實例,但只有值(作爲一個字符串)。 – helle 2012-07-14 13:36:08

1
var finp= document.getElementById('jitender'); 
if(finp.value=="") 
    finp.value= "i am value"; 
+0

你能告訴我爲什麼我的代碼不工作的原因 – Carlos 2012-07-14 13:34:25

1

在你的函數,FNAME是不是一個指向該字段的值屬性。 fname是一個字符串。因此,如果您將fname分配了不同的值,則document.getElementById('jitender').value仍將包含舊值。

這是如何改變輸入值:

function ghg() 
{ 
    var e = document.getElementById('jitender'); 
    if (e.value=='') e.value = 'i am value'; 
} 

在該函數e是指向表示與ID jitender的DOM元素中的對象。因此,在這種情況下,document.getElementById('jitender')e是指向同一對象的指針,因此,設置e.value將更改輸入的值。

1

在評論中簡要介紹了這一點,但您發佈的代碼不起作用,因爲變量fname是由VALUE NOT BY REFERENCE設置的。

這意味着fname等於任何document.getElementById('jitender')。value的值。當你設置fname的值時,因爲它是由BY VALUE設置的,所以你只設置fname的值,它沒有對它「來自」的屬性的引用。

正確的解決辦法是做

document.getElementById('jitender').value = "whatever"