2012-08-08 69 views
0

我使用JavaScript填充多個選擇。對於其中的一些,選擇選項是相同的,所以我想過創建一個選項,然後填充所有有關選擇。創建獨特選項,然後使用JavaScript填充多個選擇

這裏是我我實際上做:

var option = document.createElement('option'); 
    option.text = 'please select a journal'; 
    option.value ='NULL'; 

    try 
    { 
     selectSection.add(option, null); // standards compliant; doesn't work in IE 
    } 
    catch(ex) 
    { 
     selectSection.add(option); // IE only 
    } 

    var option = document.createElement('option'); 
    option.text = 'please select a journal'; 
    option.value ='NULL'; 

    try 
    { 
     selectSpecialIssue.add(option, null); // standards compliant; doesn't work in IE 
    } 
    catch(ex) 
    { 
     selectSpecialIssue.add(option); // IE only 
    } 

    var option = document.createElement('option'); 
    option.text = 'please select a journal'; 
    option.value ='NULL'; 

    try 
    { 
     selectVolume.add(option, null); // standards compliant; doesn't work in IE 
    } 
    catch(ex) 
    { 
     selectVolume.add(option); // IE only 
    } 

        .............ETC................ 

我試圖創建只有一個選項(選項薩姆斯),然後填充那些選擇:

var option = document.createElement('option'); 
    option.text = 'please select a journal'; 
    option.value ='NULL'; 

    try 
    { 
     selectSection.add(option, null); 
        selectSpecialIssue.add(option, null); 
        selectVolume.add(option, null); 
    } 
    catch(ex) 
    { 
     selectSection.add(option); 
        selectSpecialIssue.add(option); 
        selectVolume.add(option); 
    } 

的代碼是在這裏更好,更容易理解,但問題是隻有我最後選擇(selectVolume)被填充,我不知道爲什麼。

回答

1

我認爲這是因爲你沒有初始化選項對象。因此,您將元素附加到每個選區,但該選項只有一個對象,因此必須在其他選擇中將其刪除。更好的方法是做到這一點的一個函數裏:

function setOptionJournal(selection) { 
    var option = document.createElement('option'); 
    option.text = 'please select a journal'; 
    option.value ='NULL'; 

    try 
    { 
    selection.add(option, null); 
    } 
    catch(ex) 
    { 
    selection.add(option); 
    } 
} 
setOptionJournal(selectSection); 
setOptionJournal(selectSpecialIssue); 
setOptionJournal(selectVolume); 
+0

太好了,我還沒有想過一個函數。這解決了我的問題。非常感謝你。 – 2012-08-08 06:53:44

1

您可以將選項創建的功能

function createOption(text, value) { 
      var option = document.createElement('option'); 
      option.text = text; 
      option.value = value == null ? 'NULL' : value; 

      return option; 
     } 

,寫你的代碼一樣,

  var selectSection = document.getElementById('selectSection'); 
      var selectSpecialIssue = document.getElementById('selectSpecialIssue'); 
      var selectVolume = document.getElementById('selectVolume'); 

      var selectText ='please select a journal'; 

      selectSection.add(createOption(selectText)); 
      selectSpecialIssue.add(createOption(selectText)); 
      selectVolume.add(createOption(selectText)); 

這將是乾淨多了

+0

謝謝vadim,這與@Jan Hommes給出的答案几乎相同。這是我需要的。非常感謝。 – 2012-08-08 06:55:14