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 = "";
}

谁能帮我鉴定一下?

4

2 回答 2

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

别紧张..

于 2012-09-17T11:45:48.153 回答
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;
        }
    }
}
于 2012-09-21T11:45:32.280 回答