博主信息
博文 46
粉丝 1
评论 1
访问量 37537
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
表格自动生成器案例-2018年4月13日
笨鸟先飞
原创
686人浏览过

DOM结构:


实例

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>自动生成表格</title>
	<link rel="stylesheet" type="text/css" href="css/demo.css">
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/demo.js"></script>
</head>
<body>	
		<h2>自动表格生成器</h2>
		 <p>
		    <label for="caption">标题:    </label>
		    <input type="text" name="caption" id="caption">
	    </p>
	    <p>
		    <label for="rows">表格行:</label>
		    <input type="text" name="rows" id="rows">
	    </p>
	    <p>
		    <label for="cols">表格列:</label>
		    <input type="text" name="cols" id="cols">
	    </p>
        <p><button>生成表格</button><button>表格重置</button></p>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例



css部分:设置样式


实例

h2{
	margin-left: 35px;
	color: skyblue;
}

input{
	margin-bottom: 10px;
	/*border: none;*/
	border-color: lightgreen;
}

button{
	width: 80px;
	height: 30px;
	margin-right: 20px;
	background-color: green;
	border: none;
	color: white;
}

button:hover{
    background-color: orange;
    font-size: 1.05em;
    font-weight: bolder;
    cursor: pointer;
}

运行实例 »

点击 "运行实例" 按钮查看在线实例



Js部分:设置点击按钮事件(输入框不能为空,不能为0,不能是字母)


实例

$(document).ready(function(){
	//创建请求标志,防止重复请求
    var flag = true		
	//第一步:遍历并验证用户输入的信息

	$('button:first').on('click',function(){

	//$(选择器).each(对象索引,当前对象):用来循环遍历获取到所有jQuery对象
		$(':input').not('button').not(':input:first').each(function(index,obj){
			//标题非空判断
            if($(':input:first').val().length == 0){
				$(':input:first').after('<span style="color:red">标题不能为空</span>')
				setTimeout(function(){
                     $(':input:first').next().remove()
				},1000)
				return false
			}
			
		
			//非空判断
			if($(obj).val().length == 0){
			   //在当前元素后添加提示信息
			   $(obj).after('<span style="color:red">不能为空</span>')
			   //用定时器使提示信息2秒后消失
			   setTimeout(function(){
			   	//2秒后,将提示信息删除
			   	$(obj).next().remove()
			   },2000)
			   //返回让用户重新操作
			   return false
			   //非数字判断
			} else if(isNaN($(obj).val())){
				$(obj).after('<span style="color:red">必须是数字</span>')

				setTimeout(function(){
                   $(obj).next().remove()
				},2000)

				return false
				//非0判断
			}else if($(obj).val()<=0){
				$(obj).after('<span style="color:red">此处不能为0</span>')
				setTimeout(function(){
                   $(obj).next().remove()
				},2000)
				return false
			}

		})
		

		//第二步,处理用户的请求(ajax实现)
		if(flag==true){
			$.get(
				//请求处理的脚本
				'php/demo.php',
				//发送的请求参数
				{ 
					caption:$('input[name="caption"]').val(),
					rows:$('input[name="rows"]').val(),
					cols:$('input[name="cols"]').val()
				},
				//请求成功的回调函数
				function(msg){
                    //先将上次的表格删除
                    $('p:last').next().remove()
                    //生成新的表格
                    $('p:last').after(msg)
                    //将请求标志设置为false,禁止重复请求
                    flag = false
				}
				)
		}
	})
     
     //重置按钮
     $('button').eq(1).click(function(){
     	//将行与列数据全部情况清空
     	$('input').not('button').val('')
     	//将输入焦点重置到行文本框上
     	$('input:first').focus()
     	//将上一次请求生成的表格删除
     	$('p:last').next().remove()
     	//重置请求状态为true:允许用户请求
     	flag = true 
     })

})

运行实例 »

点击 "运行实例" 按钮查看在线实例





PHP部分:实行生成表格的功能


实例

<?php 
//判断用户的请求类型是否合法,必须是GET请求
if($_SERVER['REQUEST_METHOD'] == 'GET'){
	//如果用户发送的数据全部存在且不为空
	if(!empty($_GET['rows']) && !empty($_GET['cols']) && !empty($_GET['caption'])){
		//用较短的变量名称进行转换
		$caption = $_GET['caption'];
	    $rows = $_GET['rows'];
	    $cols = $_GET['cols'];

	    //创建表格的基本架构,采用字符串拼接方式,最后统一生成,提高效率
	    $table = '<table border="1"  cellspacing="0" cellpadding="3" align="center" width="80%">';
	    $table .= '<caption style="color:red">'.'<strong>'.$caption.'</strong>'.'</caption>'  ;    
	    //下面用双重循环来生成这个表格
	    //1.生成表头
	   
	   
	    $table .= '<tr align="center" bgcolor="lightblue"  style="color:yellow">';
	    for ($i=0; $i<$rows;$i++){
	        $w= $i+1;
	    	$table .= '<th>'.$w.'</th>';
	    }
        $table .= '</tr>';

        //2.生成表格内容区
        for($r=0;$r<$rows;$r++){
        	$table .= '<tr>';
        	for($c=0;$c<$cols;$c++){
        		//设置单元格的数据,数据与单元格数量对应($r是行)
        		$msg =$r*$cols +$c;
        		//++$msg:可以确保从1开始计数,以确保符合人类正常思维
        		$table .='<td align="center">'.++$msg.'</td>';
        	}
        	$table .= '</tr>';
        }
        $table .= '</table>';
        //将生成的表格返回到客户端
        echo $table;
        //结束当前脚本,可以省,但最好是写上
        exit();
	}else{
		exit('<span style="color:red">请求类型错误</span>');
	}
}

运行实例 »

点击 "运行实例" 按钮查看在线实例


运行效果图:

]TPLPQ`LQJ_9J$QULO87(FQ.png

总结:

1.运用$.get(URL,data,success)方法建立与服务器的连接

2.利用建立变量 var flag=true 为请求标志,防止用户重复请求

3.each(对象索引,当前对象)遍历输入框内输入内容的判断

4.用for($i=0;$i<n;$i++)循环进行对表格内容的循环

5.判断用户采用的请求类型:$_SERVER['REQUEST_METHOD]==""

6.用字符串的方式,创建表格的基本架构:

$table ='';

$table .='<caption></caption>';

$table .=<tr>;

$table .='<th><th>';

$table .= '</tr>';

$table .='</table>';

7.结束当前脚本:exit();

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学