2011-08-08 53 views
0

我有一個表單,用戶必須填寫16個單獨的元素。在這些元素的下拉列表中,值爲0-16。所有這些元素的初始值都是零。在javascript中更改下拉列表的值

用戶可以爲每個元素選擇1到16中的每個值,但他們只能選擇每個元素一次。當他們選擇每個值時,我正在改變所有元素的下拉值以消除選定的值。最後,每個下拉列表中剩下的值只有0,並且用戶爲該下拉列表選擇的值。如果用戶將值更改爲零,它還會將值返回。

我設置的方式在Chrome和FireFox中工作正常,但在IE中失敗。問題是opts.options是一個未定義的錯誤。不知何故,它適用於所有瀏覽器,但IE瀏覽器。我想我需要將元素作爲對象傳遞給填充下拉列表的方法。

這裏是方法的調用方式在PHP/HTML,它也呼籲負載 方法來初始化的下拉菜單:

echo "<TD bgcolor=$color width=15><SELECT name='$pts' onChange='populatePoints(this)' </SELECT></TD>n"; 

下面是相關JS:

function populatePoints(x){ 

setOptions (document.form1.G1_Points) 

setOptions (document.form1.G2_Points) 

setOptions (document.form1.G3_Points) 

setOptions (document.form1.G4_Points) 

setOptions (document.form1.G5_Points) 

setOptions (document.form1.G6_Points) 

setOptions (document.form1.G7_Points) 

setOptions (document.form1.G8_Points) 

setOptions (document.form1.G9_Points) 

setOptions (document.form1.G10_Points) 

setOptions (document.form1.G11_Points) 

setOptions (document.form1.G12_Points) 

setOptions (document.form1.G13_Points) 

setOptions (document.form1.G14_Points) 

setOptions (document.form1.G15_Points) 

setOptions (document.form1.G16_Points) 


} 

function setOptions (opts){ 

pointValue = opts.value 

opts.options.length = 0 

var x = 0 

opts.options[x] = new Option(0) 

x++ 

for (i=1;i<17;i++) { 

if (document.form1.G1_Points.value != i && 

document.form1.G2_Points.value != i && 

document.form1.G3_Points.value != i && 

document.form1.G4_Points.value != i && 

document.form1.G5_Points.value != i && 

document.form1.G6_Points.value != i && 

document.form1.G7_Points.value != i && 

document.form1.G8_Points.value != i && 

document.form1.G9_Points.value != i && 

document.form1.G10_Points.value != i && 

document.form1.G11_Points.value != i && 

document.form1.G12_Points.value != i && 

document.form1.G13_Points.value != i && 

document.form1.G14_Points.value != i && 

document.form1.G16_Points.value != i && 

document.form1.G15_Points.value != i){ 

opts.options[x] = new Option(i) 

x++}} 

opts.value = pointValue 

} 
+0

你爲什麼要這麼做?這似乎是忙碌的工作... – Endophage

+0

你可以通過'document。['form'+ form_number] ['G'+ i +'_ Points']。value'來訪問你的表單,而不是做所有的複製粘貼 – hugomg

回答

0

IE不喜歡這樣清除選項:opts.options.length = 0

在IE中清除你的選項:

for (i=options.length-1; i>=0; i--) { 
     select.removeChild(options[i]); 
} 

或做到這一點(最快到明路):

select.innerHTML = ""; 
相關問題