BBS小项目疑问点及解决办法-B篇(文件阅读器(onload事件及attr方法)、on和click区别、each方法、ajax展示错误信息、static静态文件)
时间:2019-11-02
本文章向大家介绍BBS小项目疑问点及解决办法-B篇(文件阅读器(onload事件及attr方法)、on和click区别、each方法、ajax展示错误信息、static静态文件),主要包括BBS小项目疑问点及解决办法-B篇(文件阅读器(onload事件及attr方法)、on和click区别、each方法、ajax展示错误信息、static静态文件)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
6. 文件阅读器(onload事件以及attr()方法)
'''
应用场景:
在上传用户头像时,我们希望在选择文件后,把当前的文件换成我选中的文件,用到change方法,然后我们
需要把选中的文件放到前端页面中展示出来,于是就应用了文件阅读器
'''
#文件阅读器的核心代码
$('#myfile').change(function () {
// 文件阅读器
//1 产生一个文件阅读器对象
var fileReader = new FileReader();
//2 获取用户上传的文件
var fileObj = $(this)[0].files[0]; #当前jq对象,[0]取原生js对象,再取文件列表,进而取文件
//3 让文件阅读器读取该文件
fileReader.readAsDataURL(fileObj); // 这一步是异步 提交完之后直接运行下一行
//4 利用文件阅读器将文件展示出来
#此处有一个问题,就是上一步因为是异步,所以有可能还没完全读取文件之后,就执行下一步展示文件信息了,这样就可以加onload事件,在页面完全加载完(文件读取完)之后,执行显示文件操作
fileReader.onload = function () {
$('#myimg').attr('src', fileReader.result)
}
#这里加了一个attr方法,就是说,当页面加载完成之后,会把选择的文件结果(是个相对路径),加到myimg标签的src中,这样就能实现,选中文件的前端显示
});
##############
##onload方法##
##############
'''
用法:
onload 事件会在页面或图像加载完成后立即发生。
onload 通常用于 <body> 元素,在页面完全载入后(包括图片、css文件等等。)执行脚本代码。
'''
'''
语法:
在 HTML 中:<body onload="SomeJavaScriptCode">
在 JavaScript 中:window.onload=function(){SomeJavaScriptCode};
参数SomeJavaScriptCode是必需的。规定该事件发生时执行的 JavaScript。
'''
#举例
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试onload</title>
<script>
function myFunction(){
alert("页面加载完成");
}
</script>
</head>
<body onload="myFunction()">
<h1>Hello World!</h1>
</body>
</html>
#页面加载完成后,弹窗显示页面加载完成,然后显示hello world!
###########
##attr方法##
###########
'''
用法:
attr() 方法设置或返回被选元素的属性值,可以加一个参数,多个参数,函数等
'''
'''
实例:
点击button按钮,图片的宽度变为180
'''
$("button").click(function(){
$("img").attr("width","180");
})
详细介绍请见:
https://www.w3school.com.cn/jquery/attributes_attr.asp
7. on和click事件的区别
element.click()这种写法不支持给动态元素或样式绑定事件。支持给动态元素绑定事件的是.live()和.on()。live在jQquery1.7后就不推荐使用了。使用.on()时注意,on前面的元素必须在页面加载的时候就存在DOM里面。
演示代码见on和click事件的区别
8. jq中的each()方法
小例子:
var arr=[1,2,3,4];
$.each(arr,function(i,n){
alert("索引"+i+"对应的值"+n);
});
#这个的意思是说,对arr进行循环遍历,然后在提示框中打出索引值i 和对应的值n
项目中的例子:
$.each($('#myform').serializeArray(),function (index,obj) {
formDataObj.append(obj.name,obj.value)
});
#这句话的意思是,首先自动把input框中的输入数据取到并得到不同的键值对的大字典(serializeArray做的事),再对这个字典进行遍历,遍历一次,就会在formDataObj中加入一个键值对{obj.name:obj.value}
9. ajax中拿到后台钩子函数得到的错误信息并展示的逻辑
##展示错误信息
$.each(data.msg,function (index,obj) {
# index就是一个个的报错字段名 obj就是数组 里面是报错信息
# 手动拼接对应的input框的id值
var targetId = '#id_' + index;
# $('#id_username') $('#id_password')
$(targetId).next().text(obj[0]).parent().addClass('has-error')
###当前input框的下一个标签(span),在里面把错误信息(即数组的第一个值)加进去,再在它的父标签加一个已经存在错误信息的类(用于后面,聚焦该输入框后,把该类去除掉)
})
##取消错误信息
$('input').focus(function () {
$(this).next().text('').parent().removeClass('has-error')
})
##鼠标聚焦到输入框,取它下面的span标签,然后把内容置空,再把父类的错误信息类去掉
10.前端静态文件的导入 settings中的配置
导入本地新建的static文件夹中的静态文件,需要在settings中进行配置,其实就是加一个路径,注意,虽然这个配置的名字叫STATICFILES_DIRS,但它是一个列表,不是字典!!!
此外,本地前端导入语句也比较固定,先在settings中配置static的url,确保前端导入时,路径可以动态变化,详细导入语句见下:
#settings.py
STATIC_URL = '/static/'
#html文件
{% load static %}
<script src="{% static 'bootstrap/js/jquery.js' %}"></script>
<link rel="stylesheet" href="{% static 'bootstrap/css/bootstrap.min.css' %}">
<script src="{% static 'bootstrap/js/bootstrap.min.js' %}"></script>
原文地址:https://www.cnblogs.com/michealjy/p/11783952.html
- Apache Spark作为编译器:深入介绍新的Tungsten执行引擎
- DC/OS 的安装与部署
- Go语言实践:从新手入门到上线真实的小型服务所遇到的那些坑
- 4个简单的数据管理技巧
- MongoDB的设计模式策略
- 如何用容器实现生产级Redis sharding集群一键交付
- Hadoop旧mapreduce的map任务切分原理
- 解读Neo4j全新的Python驱动程序
- MySQL 5.7 X Plugin:流水线技术vs.并行查询技术
- 在下函数式编程,有何贵干?
- 基于Keras/Python的深度学习模型Dropout正则项
- 揭秘深度强化学习
- Swoole-2.0.1-Alpha 已发布,提供PHP原生协程支持
- Google核心技术之——PageRank算法scala实现
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Go语言 | CSP并发模型与Goroutine的基本使用
- LeetCode链表知识点&题型总结
- dp 类找零钱类问题
- 网易校招真题三
- 嵌入式linux之go语言开发(四)go语言8583协议报文解析
- java 线程池设计模式
- 初识分布式:MIT 6.284系列(一)
- LeetCode 93 | 生成所有有效的IP地址
- 嵌入式linux之go语言开发(二)c动态库驱动调用
- 华量杯-股票预测, keras+LSTM
- Apollo配置中心源码编译及搭建
- 嵌入式linux之go语言开发(三)卡库的封装
- 可笑,你竟然不知道 Java 如何生成 UUID
- 招商银行校招题一
- 面试:mysql最全索引与优化详解