Blogger Information
Blog 46
fans 1
comment 1
visits 30314
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
表格自动生成器案例-2018年4月13日
笨鸟先飞
Original
544 people have browsed it

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();

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post