如何在javascript中动态设置值到组合框

时间:2012-09-17 08:57:30

标签: javascript html combobox

这就是我使用dwr调用将值设置为组合框的方法,

var reportID = '<%=reportid%>'; var reportName = '<%=reportname%>'; loadReportNames(reportUserID);

function loadReportNames(reportUserID){
    CustomiseReportAction.getReportNames(reportUserID, addReportNamesDropDown);
}
function addReportNamesDropDown(resultMap){
    dwr.util.removeAllOptions("reportnames");
    dwr.util.addOptions("reportnames",resultMap);
}

加载组合框后,我将值设置为加载的组合,如下所示,

document.getElementById("reportnames").value=reportID;

但未设置reportID

可能是什么问题请帮我解决这个问题。

UPDATE :

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 :(得分:4)

编辑:我只是仔细检查过它应该像你做的那样工作,所以忽略我原来的帖子。您确定reportID的内容与其中一个选项完全匹配吗?如果是数字而不是字符串,您可能想尝试

document.getElementById("reportnames").value = "" + reportID;


原始: 要设置组合框的选定选项(假设您的意思是html“select”),您需要将所需选项的“selected”属性设置为true。

var select = document.getElementById("reportnames");
for (var i = 0; i < select.options.length; i++)
{
    if (...)
        select.options[i].selected = true;
}


您需要一些方法来识别该选项,我会通过在其中保存reportID来实现。然后你可以用......替换......

select.options[i].ReportId == reportID


如果您将reportID设置为每个选项的“id” - 属性,您甚至可以这样做:

document.getElementById(reportID).selected = true;

答案 1 :(得分:4)

我没有删除该值,而是添加了以下代码,它解决了我的问题。

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