`

vue.js组件示例:小学竖式与拖式20题练习

阅读更多
    最近小孩的学校每天留20道竖式与拖式式,让家长自己出题,判对错,发微信,有点儿烦。
    使用vue.js写个了简单的出题页面,使用二维码记录答题,小孩答完了,扫一下二维码核对答案。如果您也有类似的需求,可以下载文章的附件,已调好排版,支持打印。运行只需将原代码放到Tomcat的webapps/ROOT中,访问:http://localhost:8080/math.html。
    小孩反映,使用程序出的题还有些难度,数字0会出现在一些意想不到的位置。欢迎试做。

    效果如下图所示:




<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>小学竖式与拖式20题</title>
<style type="text/css">
	body,html{
		font-size:15px;
		width:100%;
	}
	h2{
		text-align:center;
	}
	h3,h2{
		margin:0.2em;
		font-size:15px;
	}
	.question{
		line-height:1.5em;
		width:140px;
		float:left;
		margin-top:0.5em;
		border:0px solid gray;
	}
	.t1{
		height:12em;
	}
	.t2{
		line-height:3em;
	}
	.qrcontainer{
		clear:both;
		page-break-after:always;
	}
</style>
<script type="text/javascript" src="js/vue.js"></script>
<script type="text/javascript" src="js/qrcode.js"></script>
<script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
<script type="text/javascript">
	Vue.component('test-paper', {
		props:['page','total'],
		data:function(){
			return {t1:[],
				t2:[],
				a1:[],
				a2:[],
				pi:0
			};
		},
		computed:{
			answer1:function(){
				return this.getAnswer(this.a1);
			},
			answer2:function(){
				return this.getAnswer(this.a2);
			}
		},
		created:function(){
			this.t1=[];
			this.t2=[];
			this.a1=[];
			this.a2=[];
			for(var i=0; i <10; i++){
				this.t1.push(this.getT1());
				this.t2.push(this.getT2());
				this.a1.push(this.calcT1(this.t1[i]));
				this.a2.push(this.calcT2(this.t2[i]));
			}
		},
		methods:{
			getT1:function(){
				var typeIndex=Math.random()>=0.5?0:1;
				var typeName=["×","÷"];
				var n1=Math.round((Math.random()+0.4)*100),
					n2=Math.round((Math.random()+0.3)*100),
					n3=Math.round((Math.random()+0.2)*50);
				if(typeIndex==0){
					return {
						n1:n1,
						n2:n2,
						o:typeName[typeIndex]
					};
				}
				else{
					return {
						n1:n2*n3,
						n2:n3,
						o:typeName[typeIndex]
					};
				}
			},
			getT2:function(){
				var t1 = this.getT1();
				var result = this.calcT1(t1);
				var typeIndex=Math.random()>=0.5?0:1;
				var typeName=["+","-"];
				var n3=Math.round((Math.random()+0.3)*50);
				if (typeIndex==0){
					return {
						n1:n3,
						o1:typeName[typeIndex],
						n2:t1.n1,
						o2:t1.o,
						n3:t1.n2
					}
				}
				else{
					return {
						n1:n3+result,
						o1:typeName[typeIndex],
						n2:t1.n1,
						o2:t1.o,
						n3:t1.n2
					}
				}
			},
			calcT1:function(t){
				return this.calc(""+t.n1+t.o+t.n2);
			},
			calcT2:function(t){
				return this.calc(""+t.n1+t.o1+t.n2+t.o2+t.n3);
			},
			calc:function(str){
				return eval("("+str.replace("×","*").replace("÷","/")+")")
			},
			getAnswer: function(answer){
				var a="";
				for(var i=0;i<answer.length;i++){
					a+=(i+1)+"."+answer[i]+"; ";
				}
				return a;
			}
			
		},
	  	template: '<div>'
	  			+'<h2>竖式与拖式练习</h2>'
				+'<h3 style="clear:both;">一、竖式练习:</h3>'
				+'<div class="question t1" v-for="item,index in t1">{{index+1}}. {{item.n1}}{{item.o}}{{item.n2}}=</div>'
				+'<h3 style="clear:both;">二、拖式练习:</h3>'
				+'<div class="question t2" v-for="item,index in t2">{{index+1}}. {{item.n1}}{{item.o1}}{{item.n2}}{{item.o2}}{{item.n3}}<br>&nbsp;&nbsp;=<br>&nbsp;&nbsp;=<br></div>'
	  			+'<center class="qrcontainer"><div class="qrcode" v-bind:data-answer="answer1+answer2"></div><div style="clear:both;">答案二维码,http://wallimn.iteye.com<br>-第{{page}}页 共{{total}}页-</div></center>'
	  			+'</div>'
	});
</script>
</head>
<body>

<div id="math">
	<test-paper v-for="index in total" v-bind:key="index" v-bind:page="index" v-bind:total="total"></test-paper>
</div>

<script type="text/javascript">
	var vuePaper = new Vue({
		el:'#math',
		data:function(){
			return {total:100};
		}
	});

	$(function(){
		var qs = $(".qrcode");
		for(var i=0; i<qs.length; i++){
			new QRCode(qs[i], {text: qs[i].dataset.answer,correctLevel : QRCode.CorrectLevel.L});
		}
	});

</script>
</body>
</html>
  • 大小: 22.5 KB
0
1
分享到:
评论

相关推荐

    Vue.js组件开发示例:创建TodoList应用

    内容概要:本文提供了基于Vue.js和Bootstrap技术栈的详细组件开发示例——一个简单易懂的待办事项(Todo List)应用教程。该教程涵盖创建可操作的任务项列表、组件化构造与管理前端逻辑的核心流程,并介绍了相关的...

    当准备Vue.js面试时,深入学习Vue.js核心概念、实际应用以及可能遇到的问题是非常重要的.pdf

    深入学习 Vue.js 核心概念、实际应用和可能遇到的问题 当准备 Vue.js 面试时,深入学习 Vue.js 核心概念、实际应用和可能遇到的问题是非常重要的。以下是更加详细的资源,包括文档、技术要点和编程题: ### Vue.js...

    当涉及到Vue.js的面试题时,这里是一些专业的问题供您参考

    当准备Vue.js的面试时,以下是一些资源描述,可以帮助您深入学习和准备相关的面试题: 1. Vue.js官方文档:Vue.js官方文档是学习和了解Vue.js的最佳资源之一。它提供了全面而详细的指南、教程和API文档,涵盖了Vue....

    vue.js项目实战,vue.js项目实战pdf下载,JavaScript

    Vue.js 是一款轻量级的前端JavaScript框架,由尤雨溪开发,因其简单易学、高效灵活的特性,在Web开发领域迅速崛起。本资源聚焦于"Vue.js项目实战",旨在帮助开发者通过实际操作深入理解Vue.js的核心概念和技术,从而...

    VUE组件练习:VUE.rar

    在"VUE.rar"这个压缩包中,我们有两个关键文件:vue.js 和 VUE08,它们分别代表Vue.js的核心库文件和一个可能是第八个练习的Vue组件。 首先,让我们深入了解Vue.js的核心特性: 1. **组件化**:Vue.js 的核心理念...

    Vue.jsv2.6.12.rar

    Vue.js 是一款轻量级的前端JavaScript框架,由尤雨溪开发并维护,因其易学易用、高效灵活的特点,在Web开发领域广受欢迎。Vue.js v2.6.12是该框架的一个版本,它继承了Vue的核心特性,并在前一版本的基础上进行了...

    Vue.js前端开发实战-自测卷和课后习题答案.rar

    Vue.js 是一款流行的轻量级前端JavaScript框架,用于构建用户界面。它以其声明式的数据绑定、组件化开发和简易的学习曲线而备受开发者喜爱。在这个"Vue.js前端开发实战-自测卷和课后习题答案"的压缩包中,包含了与...

    vue.js官方示例

    Vue.js 是一款轻量级的前端JavaScript框架,以其易学易用、高性能和灵活性而备受开发者喜爱。"vue.js官方示例"是Vue.js官方提供的示例项目,旨在帮助开发者更好地理解和掌握Vue.js的核心概念和特性。这个示例通常...

    Vue.js学习文档

    - **组件化**:Vue.js 鼓励使用组件化的方式构建应用程序,每个组件都是一个自包含的单元,可以单独开发并复用。 #### 三、Vue.js 与其他框架的对比 - **与 AngularJS 对比**: - **学习成本**:AngularJS 引入了...

    vue.js 2.6.9

    Vue.js 是用于构建交互式的 Web 界面的库。 Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。 Vue.js 特点 简洁: HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。 数据...

    vue.min.js

    Vue.js 是用于构建交互式的 Web 界面的库。 Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。 Vue.js 特点 简洁: HTML 模板 + JSON 数据,再创建一个 Vue 实例,就这么简单。 数据驱动...

    阶段五:Vue.js项目实战资料.zip

    Vue.js 是一款流行的前端JavaScript框架,用于构建用户界面。在这个“阶段五:Vue.js项目实战资料.zip”中,我们能够找到关于使用Vue.js进行实际项目开发的详细资源,特别是针对一个名为“黑马头条”的社交媒体项目...

    100道Vue.js 面试题(含答案).pdf

    Vue.js是一种渐进式JavaScript框架,主要用于构建用户界面。它是由尤雨溪创建,并且是目前前端开发中非常流行的技术之一。Vue.js的面试题涉及到多个方面,包括路由管理、状态管理、组件通信、指令使用等,这些都是...

    Vue.js前端开发 PDF

    Vue.js的设计理念是简洁、易用且高效,它旨在通过最小的学习曲线提供强大的功能,使得开发者能够快速构建交互式的用户界面。Vue.js的PDF文档通常会涵盖以下几个主要的知识点: 1. **基础概念**:Vue.js的基础包括...

    Vue.js技术揭秘 完整版PDF

    目前社区有很多 Vue.js 的源码解析文章,但是质量层次不齐,不够系统和全面,这本电子书的目标 是全方位细致深度解析 Vue.js 的实现原理,让同学们可以彻底掌握 Vue.js。 为了把 Vue.js 的源码讲明白,课程设计成...

    Vue.js前端 JavaScript 框架

    Vue.js 是一款流行的前端 JavaScript 框架,它是一款轻量级、高性能的框架,用于构建交互式的用户界面和单页应用程序。Vue.js 的特点包括: 响应式数据绑定:Vue.js 实现了数据的双向绑定,当数据发生变化时,视图...

Global site tag (gtag.js) - Google Analytics