JavaScript(五)
JavaScript(五)
基于《JavaScript高级程序设计》
表单脚本
表单基础知识:<form>元素表示,对应js的
HTMLFormElement
,继承自HTMLElement
。
可以通过id属性,由getElementById(id)
获得表单的引用,也可用document.forms
获得页面所有的表单元素,再由索引或者name值进行访问。1
2
3var form = document.getElementById("myForm");
form.submit(); //提交表单,但不会触发submit事件
// form.reset(); //会触发reset事件表单有
elements
属性,是表单中所有表单元素的集合。通过name或者索引可以访问。表单字段共有属性:
disabled \ form(只读的指针) \ name \ readOnly \ tabIndex \ type \ value
还有
focus() \ blur()
两个共有方法。文本框脚本:
<input>
设置为type=text
或者用<textarea>
select()
方法,选中文本,对应的是select
事件,跨浏览器文本选中:1
2
3
4
5
6
7
8
9
10
11
12
13// 要操作的文本框,选择的第一个索引,最后一个字符的索引
function selectText(textbox, startIndex, stopIndex){
if (textbox.setSelectionRange){
textbox.setSelectionRange(startIndex, stopIndex);
}else if (textbox.createTextRange){
var range = textbox.createTextRange();
range.collapse(true); // 折叠到文本开始位置
range.moveStart("character", startIndex);
range.moveEnd("character", stopIndex - startIndex);
range.select();
}
textbox.focus();
}过滤输入:可以用正则表达式进行判断,然后对按钮进行禁用啥的。HTML5为文本字段新增
pattern
属性,值专门为正则表达式。eg: 只输入数值
1
<input type="text" pattern="\d+" name="count">
checkValidity() / validity属性
可以对这些约束进行判断选择框脚本:
<select>
和<option>
对应的为
HTMLSelectElement
和HTMLOptionElement
类型。
HTML5脚本编程:
跨文档消息传递:在不同域的页面传递信息(后端一般会解决跨域配置)
postMessage()
方法接受两个参数:一个消息,和一个表示消息接收方(及此时的发送方)来自哪个域原生拖放:
拖放事件:
拖动元素触发
dragstart -> drag -> dragend
拖到有效放置目标触发
dragenter -> dragover -> dragleave/drop
与之相关还有
dataTransfer
及其两个属性dropEffect / effectAllowed
错误处理
try-catch
语句:1
2
3
4
5
6
7
8
9try{
// 可能会导致错误的代码,eg
window.someNoexistentFunction();
}catch(error){
// 发生错误的处理,eg
alert(error.message);
}finally{
// 无论怎样都会执行
}错误类型:
Error
基类EvalError
RangeError
数值超出相应范围ReferenceError
找不到对象SyntaxError
语法错误TypeError
变量类型不符合要求URIError
可通过
instanceof
判断错误类型1
2
3
4
5
6
7
8
9
10
11try{
someFunction();
} catch(error){
if (error instanceof TypeError){
//...
} else if(error instanceof ReferenceError){
//...
} else{
// 可以对所有可能出现的错误进行判断
}
}抛出错误:
throw
遇到
throw
操作符,代码会立即停止,仅当有try-catch
语句捕获到被抛出的值,代码才会继续进行。调试技术
console
对象向控制台写入消息,具有下列方法:error(msg) / info() / log() / warn()
JSON
简单值
对象 :键值对
数组 :列表
序列化与解序列化
JSON.stringfy()
:接收3个参数,后两个参数可选,第一个参数为js对象,第二个为过滤器可以是数组后者函数等,第三个表示缩进以及分隔符,数值为缩进空格数,返回序列成json格式的数据JSON.parse()
反序列,接收一个参数为json数据,还有一个可选参数为还原函数