我有一个组合框,它有一些值,我也有一些值,我从组合框中选择一个值并做一些操作并返回选择的值(在会话中设置这些值)。现在我需要自动选择组合框中会话中的值。
我已经按照下面的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 :(得分: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;
}
}
}