从动态创建的组合框中删除重复值

时间:2012-09-17 09:54:54

标签: javascript html combobox

我有一个组合框,它有一些值,我也有一些值,我从组合框中选择一个值并做一些操作并返回选择的值(在会话中设置这些值)。现在我需要自动选择组合框中会话中的值。

我已经按照下面的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 = "";
}

有人可以帮我识别吗?

2 个答案:

答案 0 :(得分:0)

明白好的尝试:

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);
};

放轻松..

答案 1 :(得分: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;
        }
    }
}