Javascript 如何获取嵌套表单的动态Id?
我得到了以下代码,当用户在选择框中选择选项类型时,我想显示addoption按钮。这只是第一次添加问题。我知道问题是我给了选择框id,但是如果我不这样做,我怎么能得到选择框的动态idJavascript 如何获取嵌套表单的动态Id?,javascript,ruby-on-rails,Javascript,Ruby On Rails,我得到了以下代码,当用户在选择框中选择选项类型时,我想显示addoption按钮。这只是第一次添加问题。我知道问题是我给了选择框id,但是如果我不这样做,我怎么能得到选择框的动态id '选择一个'},:id=>my_id',:onchange=>myFunction()“”%> 函数myFunction(){ var e=document.getElementById(“我的id”); var x=e.options[e.selectedIndex].value 如果(x==“选项”
'选择一个'},:id=>my_id',:onchange=>myFunction()“”%>
函数myFunction(){
var e=document.getElementById(“我的id”);
var x=e.options[e.selectedIndex].value
如果(x==“选项”){
document.getElementById(“测试”).hidden=false;
}
否则{
document.getElementById(“测试”).hidden=true;
}
}
虽然我不完全确定您所说的“只在第一次添加问题时才有效”是什么意思,但听起来您有信心使用document.getElementById()
就是问题所在。(我不知道为什么会这样,但我不熟悉Rails,所以我认为你是对的。)
如果是这样,您可以使用EventListeners的内置“event”参数的target
属性来避免该选择器:
function myFunction(event){
`var x = event.target.options[e.target.selectedIndex].value`
...
(您可以将其缩短为
event.target.value
)虽然我不完全确定您所说的“只在第一次添加问题时才有效”是什么意思,但听起来您确信使用document.getElementById()
就是问题所在。(我不知道为什么会这样,但我不熟悉Rails,所以我认为你是对的。)
如果是这样,您可以使用EventListeners的内置“event”参数的target
属性来避免该选择器:
function myFunction(event){
`var x = event.target.options[e.target.selectedIndex].value`
...
(您可以将其缩短为
event.target.value
)我想实现一个页面,让人们可以动态添加几个问题。在我的代码中,如果人们添加多个问题,该函数仅适用于第一个问题,因为所有选择框都具有相同的id。如果我不将id设置为选择框,它将获得一个动态id,如“调查问题属性”1551055147680“问题类型”,id中的数字对于每个选择框都不同。所以我想知道获得这个动态idOk的方法,然后我上面的建议应该会解决它。(或者,您可以为每个新问题声明一个全局计数器变量,该变量递增并附加到“my_id”中,使my_id1
,my_id2
,等等——但与仅询问用户所选选项的onchange
事件相比,这似乎不必要地复杂。)我想实现一个页面,可以让人们动态添加几个问题。在我的代码中,如果人们添加多个问题,该函数仅适用于第一个问题,因为所有选择框都具有相同的id。如果我不将id设置为选择框,它将获得一个动态id,如“调查问题属性”1551055147680“问题类型”,id中的数字对于每个选择框都不同。所以我想知道获得这个动态idOk的方法,然后我上面的建议应该会解决它。(或者,您可以为每个新问题声明一个全局计数器变量,该变量递增并附加到“my_id”中,使my_id1
,my_id2
,等等——但与仅询问用户所选选项的onchange
事件相比,这似乎不必要地复杂。)