JavaScript+PHP 应用一:网页制作中双下拉菜单的动态实现

第3关:添加与删除字段 添加与删除字段 阅读详情

在网页制作中,常常遇到这种情况,通过主下拉菜单的选择,动态的生成子下拉菜单。例如:在主菜单中有“焦点新闻”、“生活时尚”、“心情故事”三个选项,通过“焦点新闻”的选择,子菜单自动生成如“国内”、“国际”、“体育”、“文娱”,依此类推。

利用JavaScript,我们可以轻松实现上述效果。但问题是,如果菜单中的选项是从数据库(或其他文件)中动态提取,实现起来就并不是轻而易举的了。笔者根据自己的实际经验,向大家介绍一种利用JavaScript + PHP的实现方法,文中的数据库采用MySQL。在本例中,笔者还将介绍在每一次表单提交之后,如何返回上一次菜单选项的选择状态。

文章中所介绍的PHP的作用,一是用来从数据库中提取菜单选项,另一作用,就是用来生成JavaScript代码。读者可以采用自己熟悉的解释型语言,如ASP。

为了简化代码,笔者假设主菜单已经通过HTML构造,由于子菜单需要动态设计,所以只绘制了基本框架,HTML代码如下:

<select name="mmenu" onChange="javascript:setMenu()"> //主菜单设计

<option value="a">焦点新闻</option>

<option value="b">生活时尚</option>

<option value="c">心情故事</option>

//value必须与下文的menu数组相一致

</select>

<select name="smenu">  //子菜单设计

</select>

我们需要考虑的是,菜单的OnChange()事件需要完成哪些步骤。其大致过程是,根据主菜单的选项,构造子菜单项目。而子菜单的项目文字最好事先设定。根据这个思路,笔者采用了JavaScript中的联合数组记录子菜单选项,并由PHP在加载时自动生成。由此,笔者设计了如下的JavaScript函数setMenu():

function setMenu(){

    menu=Array("a","b","c");   //构造menu联合数组

     <?php                   //开始PHP程序

         $DB = new My_DB(); 

         $DB->Database = "***";    //构造新的MySQL连接,这里使用了PHPLIB

         $mmenu = array("a","b","c");  //这里笔者作了简化

         for ($i=0;$i<count($mmenu);$i++){

             $id = $mmenu[$i];

             $DB->query("select menu from class where menuid ='".$id."'");

//假设菜单选项存放在class表的menu字段,menuid用来标识menu

             while ($DB->next_record()){

                 $smenu[] = "/"".$DB->f("menu")."/"";

             }

             if (isset($smenu) && is_array($smenu)){

                 $str = implode(",",$smenu);

                 echo "menu[/"$id/"] =Array($str);/n/t/t"; 

//完成menu联合数组的填充

                 unset($smenu);    //删除smenu变量

             }

         }

     ?>  //结束PHP程序

     with (document) {

          id=all("mmenu").value;  //获得主菜单的value值

          arr_menu=menu[id];

         for(i=all("smenu").options.length;i>=0;i--){

                  all("smenu").options.remove(i);  //需要清除原有的项目

        }

        if (arr_menu.length==0){

             return;

         }

         for(i=0;i<arr_menu.length;i++){

              obj=createElement("option");

             obj.text=arr_class[i];

              all("smenu").options.add(obj);

         }

     }

}

这样每次显示文档时,PHP部分将解释为Javascript语言,当单击主菜单时,子菜单将自动更新。同样道理,读者可以根据此思路,创造更复杂的多重菜单选项。

最后,笔者简要介绍一下,如何实现在表单提交后,仍然保持菜单项上一次的状态。技巧其实很多,而笔者采用的是隐含变量法。在表单中添加如下代码:

<input type="hidden" name="h1">

<input type="hidden" name="h2">

我们只需要在Form表单的OnSubmit()事件中给每个隐含变量赋值即可。即:

document.all("h1").value=document.all("mmenu").selectedIndex;

document.all("h2").value=document.all("smenu").selectedIndex;

为了利用隐含变量,在文档的Body的onLoad()事件中,我们利用PHP方法(也可用其它方法)来控制菜单的显示:

<?php

     if (!isset($h1)){  //只需要判断$h1

         $h1 = 0;

         $h2 = 0;

     }

     echo "document.all(/"mmenu/").selectedIndex=".$h1.";/n/t/t";

     echo "document.all(/"mmenu/").click();/n/t/t";

     echo "document.all(/"mmenu/").selectedIndex=".$h1.";/n/t/t";

     echo "document.all(/"smenu/").selectedIndex=".$h2;

?>

至此,我们已经实现双下拉菜单的动态实现方法。

mysql 删除表中某一列的数据及删除某一列的方法 表名 table_name 要操作的字段名 field_name 如果删除字段的值,可以将所有值清空: UPDATE table_name SET field_name = ''; 如果删除字段(这个字段从此就没有了): ALTER TABLE table_name DROP COLUMN field_name; ... 阅读详情

相关推荐

SQL server 2008 添加,删除字段

SQL server 2008 添加,删除字段

qq_44910432的博客 732

php三级联动 一个下拉框 两个文本框,php三级联动(html,php两个页面)

无标题文档省: 请选择市: 请选择区: 请选择$(function(){//获取省的信息ajaxFun(0,"sheng");})function ajaxFun(id,type){$.ajax({url:"sjld.php",//服务器的地址data:{id:id},//发送的数据success:function(data){//执行成功的回调strToArr(data,type);//调用函数...

weixin_35924773的博客 527

六,MyBatis-Plus 扩展功能(逻辑删除,通用枚举,字段类型处理,自动填充功能,防全表更新与删除插件,MybatisX快速开发插件)

逻辑删除的操作就是增加一个字段表示这个数据的状态,如果一条数据需要删除,我们通过改变这条数据的状态来实现,这样就既可以表示这条数据是删除的状态,又保留了数据以便以后统计。使用在Java Bean的属性上注解起来。标记没有删除是什么状态值是多少,删除后的状态值又是多少。当使用了逻辑删除,那么在后面是所有执行的SQL语句都被加上一个 条件筛选,判断该状态是否删除了,是否可以被查询到。注意:通用枚举类型上的处理:我们无法将一个枚举类型作为 int 数字插入到数据库中。

weixin_61635597的博客 2119

JavaScript+PHP 应用一:网页制作中双下拉菜单的动态

在网页制作中,常常遇到这种情况,通过主下拉菜单的选择,动态的生成子下拉菜单。例如:在主菜单中有“焦点新闻”、“生活时尚”、“心情故事”三个选项,通过“焦点新闻”的选择,子菜单自动生成如“国内”、“国际”、“体育”、“文娱”,依此类推。利用JavaScript,我们可以轻松实现上述效果。但问题是,如果菜单中的选项是从数据库(或其他文件)中动态提取,实现起来就并不是轻而易举的了。

zgqtxwd的专栏 467

c++从SQL SERVER中读写数据、删除数据

初学SQL--c++ SQL SERVE 数据库读写 都是网上一些大神写好的,汇总一下,形成一个从原理到应用的完整的流程,对于初学数据库的人有一定的借鉴意义。 一:背景知识: (1)ODBC(Open Database Connectivity)即开放数据库互连,提供一组对数据库访问的标准API(应用程序接口),而且其本身也提供对SQL语言的支持,他的理念是能够提供“桥”让用户连接各种不同的

心飞扬的博客 2万+

使用Navicat和Transact-SQL语言两种方法创建、修改和删除表

修改基本表 数据库db100里 向employee中添加地址列 Mysql>alter table employee add address char(50); 增加课程名称必须取唯一值的约束条件 Mysql>alter table employee add unique (name); Navicate操作 1、利用Navicat创建满足以下要求的数据库:①数据库存在于连接MySQL中;②数据库名称为xsgl; ③字符集选择utf8 – UTF-8 Unicode;排序规则选择utf8_gen

qq_44787874的博客 4299

MPC560xS评估板硬件配置全解析:电源、时钟与调试实战指南

在嵌入式系统开发中,硬件正确配置是软件稳定运行的基础,尤其对于采用多电压域设计的汽车电子与工业控制MCU。其原理在于通过独立的电源域为处理器核心、I/O接口及模拟模块提供精准供电,以实现功耗优化、电平兼容与噪声隔离。这种设计的技术价值在于提升系统可靠性、满足功能安全要求并适应复杂外设环境。应用场景广泛覆盖从实验室原型开发到产线批量烧录的全流程。本文聚焦NXP MPC560xS评估板,针对其灵活的电源架构、时钟源选择及调试工具链,提供一套清晰的跳线配置策略与实操指南,帮助开发者规避因电源冲突、时钟配置错误或调

circularr9834的博客 414

SQL报错Unknown column ‘is_delete‘?MyBatis-Plus逻辑删除字段缺失排查指南

SQL语法错误是后端开发中常见的异常类型,其中“Unknown column”错误往往源于SQL语句与数据库表结构不匹配。当MyBatis-Plus启用逻辑删除后,框架会自动在查询中追加“is_delete”条件,若表结构缺失该字段,就会触发此类报错。本文从SQL语法错误的基本原理切入,详解了由逻辑删除注解、全局配置、手写SQL或环境不一致导致的字段缺失问题,并给出系统的四步排查法、快速止血方案以及基于Flyway的迁移预防策略,帮助开发者从根源上消除这类字段缺失隐患。

weixin_32252929的博客 308

SQL Server 添加、修改和删除表格字段

1 表格添加字段 语法:alter table [表名] add [字段名] 字段属性 [NULL]; 实例: (1)给users表添加realname字段,字段属性为varchar(20)。 alter table users add realname varchar(20);

旭东怪的博客 4571

【每日一练:SQL】oracle使用一个SQL删除除了自动编号不同, 其他都相同的学生冗余信息

SQL题: 使用一个SQL删除除了自动编号不同, 其他都相同的学生冗余信息 自动编号   学号   姓名 课程编号 课程名称 分数 1        2018001 张三      1      数学    69 2        2018002 李四      1      数学    89 3        2018001 张三      1      数学    69 4        20...

debimeng 8638

合并多条记录的同一字段值SQL语句

1.生成测试数据: create table team(name varchar(32),person varchar(32)); insert into team values('A','Tom'); insert into team values('A','Jim'); insert into team values('A','Anny'); insert into team val

mxc1225的专栏 2925

mysql 删除一个字段语句怎么写_删除的sql语句怎么写

1. 删除一个表的sql 语句怎么写啊使用drop语句,drop table (需要删除表的名字)。drop是删除整个表,delete是删除表的内容。 drop语句的作用:删除内容和定义,释放空间,简单来说就是把整个表去掉。以后要新增数据是不可能的,除非新增一个表。 删除表时需要注意的事项: 1、如果删除应用表别名,则delete 后面一定要接对应的别名,然后再接表名,不然报错。2、dele...

weixin_42300927的博客 6192

ORACLE 授权 新增 修改 删除 注释 重命名 表字段 表

1.增加新字段 alter table table_name add (name varchar(20) default '', age int default 18); 2.修改表字段 2.1字段属性修改 alter table table_name modify (name varchar2(30) default ''); 2.2修改字段名 alter table table_name rename column old_name to new_name; 3、

qq_46411309的博客 3267

Oracle 增加修改删除字段

添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter table tablename modify (column datatype [default value][null/not null],….); 删除字段的语法:alter table t...

weixin_34261415的博客 4800

JavaScript结合PHP实现网页制作中双下拉菜单的动态实现

在网页制作中,常常遇到这种情况,通过主下拉菜单的选择,动态的生成子下拉菜单。本文介绍了双下拉菜单的动态实现,有需要的可以来了解一下。

Skyworks SKY85331-11的Wi-Fi 6 (802.11ax)标准 2.4G 高功率WLAN前端模块解决方案

SKY85331-11是高度集成的2 GHz前端模块(FEM)包含2 GHz单刀双掷(SPDT)发送/接收(T / R)开关,2 GHz低噪声放大器(LNA)带旁路和一个2 GHz功率放大器(PA),用于大功率802.11ax应用程序和系统LNA和PA禁用功能可确保低漏电流 关闭模式。 包括一个集成的功率检测器以提供系统内的闭环功率控制。该设备提供Small (24-pin, 3 x 5 mm) (LGA)封装。 图1.引脚配置和封装如图所示 图2.信号引脚分配和功能引脚描述 图...

zhangbao19890622的博客 4507

mysql中利用sql语句修改字段名称,字段长度等操作

在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿。这些操作可以在phpmyadmin或者别的mysql管理工具中完成,但是我们有时为了更方便的管理,会选择写sql语句来实现。 1.修改字段的长度 语法: ALTER TABLE 表名 MODIFY COLUMN 字段名 数据类型(修改后的长度...

football_game的博客 509

CST实战:5分钟搞定圆极化天线轴比分析(含远场设置技巧)

本文提供了一份CST Studio Suite圆极化天线轴比分析的实战指南。文章详细讲解了轴比的概念与工程标准,并重点演示了如何正确设置远场监视器以获取Axial Ratio数据,包括关键步骤与后处理技巧。最后,通过植入式天线在生物组织环境中的案例,分析了复杂环境对轴比性能的影响及优化思路。

nokia的博客 997

SQL Server向数据库表中添加主键列

SQL 目录:https://blog.youkuaiyun.com/dkbnull/article/details/87932858 SQL Server 数据库,向已设置主键的数据库表中插入新一列,并设为主键。 首先从基础知识开始看, 建表: create table 表名 ( 字段名1 int not null, …………, ...

null 1万+

of_graph_get_remote_port

isp { compatible = "isp"; core@0 { id = <0>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; ...

wmzjzwlzs的专栏 1166

高效复用PCB设计:Cadence Sub-Drawing跨项目复制技巧

本文详细介绍了Cadence Allegro中Sub-Drawing功能的应用技巧,帮助PCB工程师高效复用成熟设计模块。通过分步教学,从精准导出到完美导入,并提供了解决坐标错位与DRC冲突的实用避坑指南。掌握这一技巧能显著提升设计效率,实现团队知识的标准化积累与快速复用。

weixin_29172201的博客 397
下一篇: JavaScript + PHP 应用二:网页设计中树形菜单的动态实现
tttk
博客等级 码龄27年 37粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值