求救!高手帮忙看看,为什么下拉框为空

lvhongfen 2011-04-25 10:14:06
var str="<option value=\"0\">请选择</option>";
for(……){
str+="<option value=\""+filterId+"\">"+filterName+"</option>";
}
alert(str);//弹出Str
$('#pid').html(str);
alert("ok");
Str和Ok都能弹出,并且Str有值.但pid下拉框却为空!!!

下拉框:<select name="filter.pid" id="pid"></select>
附:
如果不用Ajax这样从Action中直接查出filters就可以了
<s:select list="filters" headerKey="0" headerValue="" listKey="filterId" listValue="filterName"></s:select>
...全文
265 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
还是不行!为什么啊!
roycxshun 2011-04-25
  • 打赏
  • 举报
回复
看一下是不是因为转义的问题,试着把\"直接用'来代替看看有没有问题
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
您的那种方式,我的这种方式以前用过,都是可以的

可问题是:它为什么就不显示呢????
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lvhongfen 的回复:]

Ok, let me try!
[/Quote]

http://www.electrictoolbox.com/jquery-add-option-select-jquery/

你好好看看,append应该可以用的。
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
我知道不支持innerHTML这样写会报:对象不支持此属性或方法
但用html(str)就没问题啊!

在线等,拜托各位了!
linsn007 2011-04-25
  • 打赏
  • 举报
回复
jquery没用过,不过对select是不能用js的innerHTML来设置选项的哟,它不支持innerHTML操作,必须用new Option
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
be not allowed
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
Ok, let me try!
  • 打赏
  • 举报
回复
Why not use append directly:


$("#pid").append("<option value=\"0\">请选择</option>");
for(……){
$("#pid").append("<option value=\""+filterId+"\">"+filterName+"</option>");
}
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
Str是有值的
alert(str);
结果如下:
<option value=\"0\">请选择</option><option value=\"2\">政治</option><option value=\"3\">科技</option>
岁月之梦 2011-04-25
  • 打赏
  • 举报
回复
filterId 这个可以打出来吗?你用firebug看看 是不是循环出来的都是空的!
亲努力啊 2011-04-25
  • 打赏
  • 举报
回复
你上面的方法没试不知行不行
我这是可以的

//动态获取
function AjaxAssetsSecProperty(assetsTypeId){
DWREngine.setAsync(false);//设置为同步调用
ajaxGunDwrBean.gunAssetsSepList(assetsTypeId,
function (data){
clearSelectList();
for(var i=0;i<data.length;i++){
var op=document.getElementById("TAssetsSepId");
var opt=data[i].split("|");
op.options[op.options.length]=new Option(opt[1],opt[0]);
}
}
);
DWREngine.setAsync(true);//设置为异步调用
}
清空下拉框
function clearSelectList() {
var models = document.getElementById("TAssetsSepId");
while(models.childNodes.length > 0) {
models.removeChild(models.childNodes[0]);
}
models.options[models.options.length]=new Option("----------","");
}
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复

问题解决了,谢谢大家的参与

还是我和$.ajax()放在一起造成的,我又单独发送一个请求就可以了!

lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
代码都执行过,就是不显示!杯具
lvhongfen 2011-04-25
  • 打赏
  • 举报
回复
我按照4楼的做了,还是不行!

其实我们两种做法都对,可就是不知道为什么不显示!

我怀疑是不是跟我的$.ajax()有关
可是我的都执行了啊,为什么就是不显示呢?
ebonyzhang 2011-04-25
  • 打赏
  • 举报
回复
要显示出的不是应该放在循环里的吗?

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧