JavaScript 廖2
HTML表单的输入控件主要有以下几种:
文本框,对应的
<input type="text">
,用于输入文本;口令框,对应的
<input type="password">
,用于输入口令;单选框,对应的
<input type="radio">
,用于选择一项;复选框,对应的
<input type="checkbox">
,用于选择多项;下拉框,对应的
<select>
,用于选择一项;隐藏文本,对应的
<input type="hidden">
,用户不可见,但表单提交时会把隐藏文本发送到服务器
===================
如果我们获得了一个<input>
节点的引用,就可以直接调用value
获得对应的用户输入值。这种方式可以应用于text
、password
、hidden
以及select
。但是,对于单选框和复选框,value
属性返回的永远是HTML预设的值,而我们需要获得的实际是用户是否“勾上了”选项,所以应该用checked
判断:
// <label><input type="radio" name="weekday" id="monday" value="1"> Monday</label>
// <label><input type="radio" name="weekday" id="tuesday" value="2"> Tuesday</label>
var mon = document.getElementById('monday');
var tue = document.getElementById('tuesday');
mon.value; // '1'
tue.value; // '2'
mon.checked; // true或者false
tue.checked; // true或者false
================
没有name
属性的<input>
的数据不会被提交
<!-- HTML -->
<form id="test-form" onsubmit="return checkForm()">
<input type="text" name="test">
<button type="submit">Submit</button>
</form> <script>
function checkForm() {
var form = document.getElementById('test-form');
// 可以在此修改form的input...
// 继续下一步:
return true;
}
</script>
注意要return true
来告诉浏览器继续提交,如果return false
,浏览器将不会继续提交form,这种情况通常对应用户输入有误,提示用户错误信息后终止提交form。
===================
在HTML表单中,可以上传文件的唯一控件就是<input type="file">
。
注意:当一个表单包含<input type="file">
时,表单的enctype
必须指定为multipart/form-data
,method
必须指定为post
,浏览器才能正确编码并以multipart/form-data
格式发送表单的数据。
出于安全考虑,浏览器只允许用户点击<input type="file">
来选择本地文件,用JavaScript对<input type="file">
的value
赋值是没有任何效果的。当用户选择了上传某个文件后,JavaScript也无法获得该文件的真实路径
由于JavaScript对用户上传的文件操作非常有限,尤其是无法读取文件内容,使得很多需要操作文件的网页不得不用第三方插件来实现,如Flash这样的
===============
JavaScript的一个重要的特性就是单线程执行模式
================
AJAX不是JavaScript的规范,是用JavaScript执行异步网络请求。
用JavaScript写一个完整的AJAX代码并不复杂,但是需要注意:AJAX请求是异步执行的,也就是说,要通过回调函数获得响应
在现代浏览器上写AJAX主要依靠XMLHttpRequest
对象
function success(text) {
var textarea = document.getElementById('test-response-text');
textarea.value = text;
} function fail(code) {
var textarea = document.getElementById('test-response-text');
textarea.value = 'Error code: ' + code;
} var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象 request.onreadystatechange = function () { // 状态发生变化时,函数被回调
if (request.readyState === ) { // 成功完成
// 判断响应结果:
if (request.status === ) {
// 成功,通过responseText拿到响应的文本:
return success(request.responseText);
} else {
// 失败,根据响应码判断失败原因:
return fail(request.status);
}
} else {
// HTTP请求还在继续...
}
} // 发送请求:
request.open('GET', '/api/categories'); //URL使用的是相对路径,默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致。
request.send(); alert('请求已发送,请等待响应...');
当创建了XMLHttpRequest
对象后,要先设置onreadystatechange
的回调函数。在回调函数中,通常我们只需通过readyState === 4
判断请求是否完成,如果已完成,再根据status === 200
判断是否是一个成功的响应
用Promise也可以实现异步调用
==============
Canvas是HTML5新增的组件,它就像一块幕布,可以用JavaScript在上面绘制各种图表、动画等
======================
jQuery这么流行,肯定是因为它解决了一些很重要的问题。实际上,jQuery能帮我们干这些事情:
消除浏览器差异:你不需要自己写冗长的代码来针对不同的浏览器来绑定事件,编写AJAX等代码;
简洁的操作DOM的方法:写
$('#test')
肯定比document.getElementById('test')
来得简洁;轻松实现动画、修改CSS等各种操作。
jQuery的理念“Write Less, Do More“,让你写更少的代码,完成更多的工作!
jQuery把所有功能全部封装在一个全局变量jQuery
中,而$
也是一个合法的变量名,它是变量jQuery
的别名
====================
使用jQuery只需要在页面的<head>
引入jQuery文件即可:
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
...
</head>
==================
jQuery对象类似数组,它的每个元素都是一个引用了DOM节点的对象。
jQuery对象和DOM对象之间可以互相转化:
var div = $('#abc'); // jQuery对象
var divDom = div.get(); // 假设存在div,获取第1个DOM元素
var another = $(divDom); // 重新把DOM包装为jQuery对象
====================
按tag查找:var ps = $('p'); // 返回所有<p>节点
按class查找注意在class名称前加一个.
:
var a = $('.red'); // 所有节点包含`class="red"`都将返回
// 例如:
// <div class="red">...</div>
// <p class="green red">...</p>
查找同时包含red
和green
的节点:
var a = $('.red.green'); // 注意没有空格!
// 符合条件的节点:
// <div class="red green">...</div>
// <div class="blue green red">...</div>
按属性查找
var email = $('[name=email]'); // 找出<??? name="email">【属性查找】
var icons = $('[name^=icon]'); // 找出所有name属性值以icon开头的DOM【前缀查找或者后缀查找】
var names = $('[name$=with]'); // 找出所有name属性值以with结尾的DOM
var tr = $('tr.red'); // 找出<tr class="red ...">...</tr>【组合查找】
$('p.red,p.green'); // 把<p class="red">和<p class="green">都选出来【多项选择器】
最新文章
- [.NET] 利用 async &; await 进行异步 IO 操作
- c++ 离散数学 群的相关判断及求解
- fish药品使用说明
- postgreSQL 统计语句
- wp8 入门到精通 生命周期
- ios程序播放音频文件
- C#中跨线程访问控件问题解决方案
- Android crop image size
- BitMask 使用参考
- BZOJ2226: [Spoj 5971] LCMSum
- 面试体验:Google 篇(转)
- 查看Linux下*.a库文件中文件、函数、变量
- Web工程软件升级之数据库升级(二)
- SpringFramework_module
- Linux CentOS 安装 httpd
- 201521123082 《Java程序设计》第6周学习总结
- 201521123013 《Java程序设计》第12周学习总结
- os模块walk方法
- 让WeuiPicker隐藏日期中的日,只保留年月
- awk 入门教程