Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取嵌套表单的动态Id?_Javascript_Ruby On Rails - Fatal编程技术网

Javascript 如何获取嵌套表单的动态Id?

Javascript 如何获取嵌套表单的动态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==“选项”

我得到了以下代码,当用户在选择框中选择选项类型时,我想显示addoption按钮。这只是第一次添加问题。我知道问题是我给了选择框id,但是如果我不这样做,我怎么能得到选择框的动态id


'选择一个'},: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
事件相比,这似乎不必要地复杂。)