//过滤所有的非中文,字母,数字字符
function filter_str(str)
{
interval=typeof(arguments[1])!='undefined'?arguments[1]:' ';
if(str.length>0)str=DBC2SBC(str)
return str.replace(/[^\u4E00-\u9FA5a-zA-Z0-9]/g,interval)
}
//* 参数说明:
//* str:要转换的字符串
//* flag:标记,为0时半转全,为非0时全转半 默认是1
//* 返回值类型:字符串
function DBC2SBC(str) {
var i;
var result='';
flag=typeof(arguments[1])!='undefined'?arguments[1]:1;
if (str.length ......
本文译自:http://www.codeproject.com/KB/scripting/jsbeginner.aspx
原文:JavaScript For Beginners
适宜对象:JavaScript初学者。
目录:
包含与引入(Embedding,including)
write 和 writeln
文档对象(document object)
bgColor 和 fgColor
消息框(Message Box)
变量(Variables)和条件(Conditions)
函数(Function)
onClick
onLoad
onUnload
表单(Form)
onBlur
连接(Link)
日期(Date)
窗口(window)
重新载入(Reload)
加载(Loading)
遥控窗口
开启器(opener)
框架(Frame)
包含与引入(Embedding and including)
让我们先看一个简单的例子:
<html>
<head>
<title>This is a JavaScript example</title>
<script language="JavaScript">
<!--
document.write("Hello World!");
//-->
</script>
</head>
<body> Hi, man! </body>
</html>
通常情况下,JavaScript代码是以<script language="JavaScript">开头,并以</script>结尾,整个代码放在<head> 和 &l ......
from http://news.csdn.net/a/20100424/218105.html
JavaScript 的成功让人津津乐道,为 Web 网页编写 JavaScript 代码已经是所有 Web 设计师的基本功,这门有趣的语言蕴藏着许多不为人熟知的东西,即使多年的 JavaScript 程序员,也未能完全吃透。本文从7个方面讲述 JavaScript 中那些你不很熟知但非常实用的技巧。
简略语句
JavaScript 可以使用简略语句快速创建对象和数组,比如下面的代码:
可以使用简略语句如下:
对象 car 就此创建,不过需要特别注意,结束花括号前一定不要加 ";" 否则在 IE 会遇到很大麻烦。
创建数组的传统方法是:
使用简略语句则:
另一个可以使用简略语句的地方是条件判断语句:
可以简略为:
JSON 数据格式
JSON 是 "JavaScript Object Notation" 的缩写,由 Douglas Crockford 设计,JSON 改变了 JavaScript 在缓存复杂数据格式方面的困境,如下例,假如你要描述一个乐队,可以这样写:
你可以在 JavaScript 中直接使用 JSON,甚至作为某些 API 的返回数据对象,以下代码调用著名书签网站 delicious.com 的一个 API,返回你在该网站的所有书签,并显示在你自己的网站:
JavaScript 本地函数 (Math, Array 和 ......
// PageLoad事件
var onloadMethod = window.onload;
window.onload = window_Load;
function window_Load() {
var i;
var item;
// 全部连接的事件
for (i = 0; i < document.links.length; i ++) {
item = document.links[i]
Object.Aspect.around(item, "onclick", checkLoading);
}
// 全部按钮的事件
for (i = 0; i < document.forms[0].elements.length; i ++) {
item = document.forms[0].elements[i]
if (item.type == "button" ||
item.type == "submit" ||
item.type == "reset") {
Object.Aspect.around(item, "onclick", checkLoading);
}
}
if (onloadMethod != null && typeof (onloadMethod) == "function") {
// 执行Page的onload事件
return onloadMethod();
} else {
return true;
}
}
// 防止重复提交
var checkLoading = function(invocation) {
if (isDocumentLoading()) {
//alert("now loading…");
return false;
}
return invocation.proceed();
}
// 当前页面提交状态判断
function isDocumentLoading() {
retur ......
在JavaScript中字符串组合相加,大家一般直接用+拼接起来.例如:
for(i=0; i<len; i++){
if(zdname != ""){
zdname += "#" + trNode.children.item(i).getAttribute("busPath");
}else{
zdname = trNode.children.item(i).getAttribute("busPath");
}
}
这种写法在数据量大的时候是没有问题的,但是如果循环次数太大就存在性能问题,同时在字符串拼接的时候还需要在循环内容做拼接前的判断。下面提供一种用数组拼接的方法。
首先第一个StringBuffer对象
function StringBuffer() {
var _parts = new Array();
}
StringBuffer.prototype.append = function (text) {
if ((text == null) || (typeof(text) == 'undefined')) {
return this;
}
if ((typeof(text) == 'string') && (text.length == 0)) {
return this; ......
综观一个系统的发展,无非是发现一个问题就把它独立出来解决掉,因此它的所有模块(或者分支)其实针对独立的问题,这样我们对这些问题若有什么更好的解决方法,替换相应的模块便是,要不代码混杂在一起没法看了。上一部分就提到了,attachEvent的事件列队出了些问题,我们要手动构建列队了。所谓列队就是有先有后的问题,因此DE大神搞了一个全局的uuid,分配给每个回调函数。但要注意,每个回调所针对的事件源与事件类型,因此这不可能一个数组搞定。看下图:
el.attachEvent("onmouseenter",function(){alert(window.event.type)})
| | | | |
| | | | |
事件源 监听器 事件类型 回调函数 事件对象
事件源,其实el也一定是事件源,如某同类型事件从文档树下冒泡上来,或者顶层对象要捕获它下面的某个同类型事件,那它就成了currentTarget。为简单起见,我称它为事件源。这个事件源可以绑定很多监听器,每个监听器可以针对不同的事件类型,当然这也意味着有许多回调函数。当我们发现attachEvent多个同类型事件时,回调函数的次序出错时,意 ......