2011-04-06 85 views
1

如果我在菜单中更改选项,下面的代码应该给我一个ParentSelect中的1,但我得到一个0.谁能告诉我什么是错误?选择标记中的onchange事件!

<input type="hidden" name="ParentSelect" value="0" /> 
<select class="style" onchange="document.forms[0].elements['ParentSelect']=1" > 
<option value="NULL">NULL</option> 
... 
</select> 

在这里,我有两个表在数据库中。它们包含一些像ServerName等字段。

建议?

+0

现在可以看到我的代码? – Shilpa 2011-04-06 19:57:00

回答

3

document.forms[0].elements['ParentSelect']返回整个输入,如果你想设置它的值使用

document.forms[0].elements['ParentSelect'].value = 1 
4

你的价值1直接分配给物业document.forms[0].elements['ParentSelect'],而你大概的意思是改变元素的值,这将实现这样的:

document.forms[0].elements['ParentSelect'].value = 1

我同意一些关于缺乏有效的HTML strucutre的其他意见,我还要加上塔如果你打算通过document.forms[0]来引用这个字段,那么你可以给该字段一个id属性,这样你就可以简单地使用'document.getElementById`,这样你的代码就可以工作,而不管页面上的其他表单是什么。总之,使用方法,这里是完整的代码:

<form> 
    <input type="hidden" name="ParentSelect" value="0" /> 
    <select class="style" onchange="document.forms[0].elements['ParentSelect'].value=1" > 
     <option value="1">Value 1</option> 
     <option value="2">Value 2</option> 
    </select> 
</form> 

使用,而不是一个id:

<form> 
    <input id="parentSelect" type="hidden" name="ParentSelect" value="0" /> 
    <select class="style" onchange="var e = document.getElementById('parentSelect'); if (e) e.value=1;" > 
     <option value="1">Value 1</option> 
     <option value="2">Value 2</option> 
    </select> 
</form> 
+0

为了回应现在已删除的评论:我必须对此进行测试以验证在所有浏览器中都是如此,但我确定您会获得使用给定ID的第一个元素(您在任何浏览器中都会执行I我非常熟悉)。为了使这个代码更加灵活,我完全不会使用这种方法。你最好做一些像this.form.elements ['ParentSelect']。value = 1' - 如果你要坚持内联脚本。 – 2011-04-06 22:14:56