2012-09-17 85 views
0

我有一个组合框,它具有一些值,我也有一些值,我从组合框中选择一个值并进行一些操作并返回选定的值(在会话中设置这些值)。现在我需要自动选择组合框中会话的值。从动态创建的组合框中删除重复的值

我按照下面的JavaScript和它工作正常,但它创建了一个重复的值,它是已在组合框中:

function addCombo() { 
    var reportID = '<%=reportid%>'; 
    var reportName = '<%=reportname%>'; 

    var textb = document.getElementById("reportnames"); 

    var option = document.createElement("option"); 
    option.text = reportName; 
    option.value = reportID; 
    option.selected='selected'; 
    try { 
     textb.add(option, null); //Standard 
    }catch(error) { 
     textb.add(option); // IE only 
    } 
    textb.value = ""; 
} 

谁能帮我鉴别?

+0

这个链接可以帮助你:http://stackoverflow.com/questions/4590311/set-option-selected-attribute-from-dynamic-created-option – Anoop

回答

0

我还没有删除的价值,而我加入如下代码,它解决了我问题。

function addCombo() { 
    var reportID = '<%=reportid%>'; 
    var options= document.getElementById('reportnames').options; 
    for (var i= 0, n= options.length; i < n ; i++) { 
     if (options[i].value==reportID) { 
      document.getElementById("reportnames").selectedIndex = i; 
      break; 
     } 
    } 
} 
0

明白OK尝试:

function addCombo() { 
    var reportID = 'aa'; 
    var reportName = 'aa'; 

    var textb = document.getElementById("reportnames"); 
    var option = document.createElement("option"); 

    if (hasValue(textb, reportID)) (function() { 


     // selected attr remove 
     for (var i=textb.options.length-1; i >= 0; i--) (function() { 

      if (textb.options[i].selected == true) (function() { 

       textb.options[i].removeAttribute("selected"); 
      }()); 
     }()); 

     option.text = reportName; 
     option.value = reportID; 

     // selected new option element 
     option.setAttribute("selected", "selected"); 


     try { 
      textb.add(option, null); //Standard 
     } catch(error) { 
      textb.add(option); // IE only 
     }; 

     /* 
     * I do not understand selected added option value "" ?? 
     */ 
     //textb.value = ""; 

     }()); 
}; 

hasValue的功能:

function hasValue(element, value) { 
    var results = true; 

    for (var i=element.options.length-1; i >= 0; i--) (function() { 

     if (element.options[i].value == value) (function() { 
      results = false; 
     }()); 
    }()); 

    return (results); 
}; 

处之泰然..