热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jquery下拉框动态生成

小妹不是很会这些请大家帮我看看这段代码我是想实现一个点按钮动态生成一个下拉框和一个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 个解决方案

#1


不为空的话 就不用通过ajax来取json了


 又打错了

#2


第二次 jsondata 是什么了啊 ?

#3


引用 2 楼 zell419 的回复:
第二次 jsondata 是什么了啊 ?

第一次取的json的值

if (jsondata == null) {
            $.getJSON("/Manager/GetCom", function (data) {
                jsondata = data;
                $.each(data, function (i, n) {
                    var opt = $("").text(n.name).val(n.name);
                })
            })
        }

#4


哦 我知道了 。
dd.append(opt);
td1.appendChild(dd.get(0));
这两句啊 。
把opt 弄出来吧 。

#5


引用 4 楼 zell419 的回复:
哦 我知道了 。
dd.append(opt);
td1.appendChild(dd.get(0));
这两句啊 。
把opt 弄出来吧 。


啊  好囧的错误;!!! 丢人啊  谢谢了哈

推荐阅读
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 本文探讨了在PHP中实现MySQL分页查询功能的优化方法与实际应用。通过详细分析分页查询的常见问题,提出了多种优化策略,包括使用索引、减少查询字段、合理设置缓存等。文章还提供了一个具体的示例,展示了如何通过优化模型加载和分页参数设置,显著提升查询性能和用户体验。 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
  • 普通树(每个节点可以有任意数量的子节点)级序遍历 ... [详细]
  • 2022年2月 微信小程序 app.json 配置详解:启用调试模式
    本文将详细介绍如何在微信小程序的 app.json 文件中启用调试模式(debug),并通过实际案例展示其配置方法和应用场景。 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 在JavaWeb开发中,文件上传是一个常见的需求。无论是通过表单还是其他方式上传文件,都必须使用POST请求。前端部分通常采用HTML表单来实现文件选择和提交功能。后端则利用Apache Commons FileUpload库来处理上传的文件,该库提供了强大的文件解析和存储能力,能够高效地处理各种文件类型。此外,为了提高系统的安全性和稳定性,还需要对上传文件的大小、格式等进行严格的校验和限制。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在处理大规模数据数组时,优化分页组件对于提高页面加载速度和用户体验至关重要。本文探讨了如何通过高效的分页策略,减少数据渲染的负担,提升应用性能。具体方法包括懒加载、虚拟滚动和数据预取等技术,这些技术能够显著降低内存占用和提升响应速度。通过实际案例分析,展示了这些优化措施的有效性和可行性。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
author-avatar
mobiledu2502877493
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有