2011-06-02 61 views
0

this.form.sel2类似于document.getElementById('sel2')javascript - 元素的名称或标识

我选择标签如下:

<select size=5 id="sub_player_ids" name="sub[player_ids][]"> 

,当我在我的javascript代码把标记的名称,即,sub[player_ids][],我得到一个语法错误。 我想找到一种解决方法,以便使用该元素的名称,而不是使用该名称。

但是使用document.getElementById('sub_player_ids')不起作用。

感谢您提供的任何建议。

请参阅我下面的JavaScript代码:

 <input type="button" value="--&gt;" 
     onclick="moveOptions(this.form.sel1, this.form.sel2);" /><br /> 
     <input type="button" value="&lt;--" 
     onclick="moveOptions(this.form.sel2, this.form.sel1);" /> 
+0

'可保存格式[ “complexFormElementName”]'(或'aForm.simpleFormElementName') - id需要应用,但是一些浏览器(如IE *)可能会与它们一起工作。 – 2011-06-02 16:16:32

+1

我没有看到任何带有ID或名称为“sel2”的元素。是什么赋予了? – 2011-06-02 16:18:52

+4

你的ID是“sub_player_ids”,你为什么想要'sel2'? – 2011-06-02 16:18:53

回答

3

你的元素的idsub_player_ids,而不是sel2。所以document.getElementById("sub_player_ids")会工作。

您可能还会发现this.form["sub[player_ids][]"]可以工作。使用带引号的形式可以让你使用不能用于文字形式的东西。

东西要小心的是,IE7和更早的版本有一个破碎的版本getElementById,将发现,使用指定的字符串作为name,而不是作为一个id东西,即使东西后的页面上实际使用它作为一个id。 (是的,真的; more here。)有些图书馆会为你解决这个问题(例如jQuery)。实际上,谈到图书馆,一个好的图书馆确实可以帮助解决各种浏览器不一致问题,并提供许多便利的实用功能,让您专注于实际的业务问题。您可以考虑查看jQuery,Prototype,YUI,Closureany of several others

2

您可以使用括号记号来代替:

this.form['sub[player_ids][]'] 

...或getElementById(),与 ID:

document.getElementById('sub_player_ids') 
1

使用document.getElementById('sub_player_ids')来获得该元素。

1

你打错ID

document.getElementById('sub_player_ids') 
1

确认您的选项包含id,它只会包含namesel2