2012-07-14 121 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"