作者:mobiledu2502877493 | 来源:互联网 | 2023-02-06 16:19
小妹不是很会这些请大家帮我看看这段代码我是想实现一个点按钮动态生成一个下拉框和一个textbox的效果下拉框的数据是从数据库中取出来的我从网上找了段动态生成下拉框的代码并自己进行了修改
小妹不是很会这些 请大家帮我看看这段代码
我是想实现一个点按钮 动态生成一个下拉框和一个textbox的效果 下拉框的数据是从数据库中取出来的
我从网上找了段动态生成下拉框的代码 并自己进行了修改 所以有点乱
我通过ajax已成功取到json数据 并赋值成功 效果已实现 但是我每点一下 它就要取一次数据 实在是太浪费
所以我想它第一次取到值 就赋值给一个全局变量 然后每点一次时 就判断一下这个全局变量是不是不为空 为空的话 就不用通过ajax来取json了
全局变量是 jsondata
判断逻辑是
if (jsondata == null) {
$.getJSON("/Manager/GetCom", function (data) {
jsondata = data;
$.each(data, function (i, n) {
var opt = $("").text(n.name).val(n.name);
})
})
}
else {
$.each(jsondata, function (i, n) {
var opt = $("").text(n.name).val(n.name);
})
}
但是我这样修改后 下拉框就显示不出来了!
试了firebug调试 发现执行顺序很乱 不知是怎么回事
调试时的代码是:
function onclick(event) {
add();
}
function (data) {
jsondata = data;
$.each(data, function (i, n) {var opt = $("").text(n.name).val(n.name);});
}
function (i, n) {
var opt = $("").text(n.name).val(n.name);
}
function add() {
var table = document.getElementById("tbody");
var tr = document.createElement("tr");
table.appendChild(tr);
var td1 = document.createElement("td");
var td2 = document.createElement("td");
tr.appendChild(td1);
tr.appendChild(td2);
var text = document.createElement("input");
text.type = "text";
text.name = "name";
td2.appendChild(text);
var dd = $("").attr("id", "ddl");
if (jsondata == null) {
$.getJSON("/Manager/GetCom", function (data) {jsondata = data;$.each(data, function (i, n) {var opt = $("").text(n.name).val(n.name);});});
} else {
$.each(jsondata, function (i, n) {var opt = $("").text(n.name).val(n.name);});
}
dd.append(opt);
td1.appendChild(dd.get(0));
}
function del() {
var trs = document.getElementsByTagName("tr");
var tbody = document.getElementById("tbody");
tbody.removeChild(trs[trs.length - 1]);
}
function onclick(event) {
add();
}
发现根本没有执行if(json==null){}else{}这段 调试的时候 这几行也是显示的灰的 不明白为什么会是灰的...
firebug中的错误信息是opt is not defined (opt是下拉框的选项定义)
完整代码:
html
5 个解决方案
不为空的话 就不用通过ajax来取json了
又打错了
哦 我知道了 。
dd.append(opt);
td1.appendChild(dd.get(0));
这两句啊 。
把opt 弄出来吧 。