1、将字符转换成数据
1
)
return
str
*
1
+
1
;
2
)
return
parseInt(str);
//
return parseFloat(str);
3
)
new
Number(str);
2、parentElement和parentNode区别
第一个是IE dom,第二个是标准DOM;换一个非ie浏览器试试就知道区别了(myie或maxthon或greenbrowser或tt之类都是ie浏览器……)
3、JS中的trim()——去前后的空格
String.prototype.trim
=
function(){
return
this
.replace(
/
(
^
\s
*
)
|
(\s
*
$)
/
g,
""
);}
使用:
"
test str
"
.trim();返回结果:
"
test str
"
;
4、报错:missing ( before function parameters
不知道为什么,放到struts中会报这样的错,在其他工程下不会报错,估计是JS格式不对;
例如:把function String.prototype.trim(){
return
this
.replace(
/
(
^
\s
*
)
|
(\s
*
$)
/
g,
""
);}修改为:
String.prototype.trim
=
function() {
return
this
.replace(
/
(
^
\s
*
)
|
(\s
*
$)
/
g,
""
);}这样就不会报错了。
5、window.showModalDialog不缓存
在Sturts的Action中加入:
response.setHeader(
"
Pragma
"
,
"
No-Cache
"
);
response.setHeader(
"
Cache-Control
"
,
"
No-Cache
"
);
response.setDateHeader(
"
Expires
"
,
0
);
6、类似与Java中的startWith()和endWith()方法
String.prototype.endWith
=
function(str){
if
(str
==
null
||
str
==
""
||
this
.length
==
0
||
str.length
>
this
.length)
return
false
;
if
(
this
.substring(
this
.length
-
str.length)
==
str)
return
true
;
else
return
false
;
return
true
;
}
String.prototype.startWith
=
function(str){
if
(str
==
null
||
str
==
""
||
this
.length
==
0
||
str.length
>
this
.length)
return
false
;
if
(
this
.substr(
0
,str.length)
==
str)
return
true
;
else
return
false
;
return
true
;
}
应用:
"
123456
"
.startWith(
"
123
"
);
-->
结果为true;
应用:
"
123456
"
.endWith(
"
456
"
);
-->
结果为true;
7、限制录入的分数只能在(0~100之间),而且最多为一位小数,且小数的数字只能为0或者5
String.prototype.limitDigit
=
function(){
//
限制最多为1位小数(返回值true/false)
var parttern
=/^
(\d
+
)(\.{
0
|
5
})
?
$
/
;
return
parttern.test(
this
.replace(
/
(
^
\s
*
)
|
(\s
*
$)
/
g,
""
));
}
8、String有个属性length,但是它不能区分英文字符,计算中文字符和全角字符。但是在数据存储的时候中文和全角都是用两个字节来存储的,所有需要额外处理一下。自己写了个函数,返回String正真的长度:
String.prototype.codeLength
=
function(){
var len
=
0
;
if
(
this
==
null
||
this
.length
==
0
)
return
0
;
var str
=
this
.replace(
/
(
^
\s
*
)
|
(\s
*
$)
/
g,
""
);
//
去掉空格
for
(i
=
0
;i
<
str.length;i
++
)
if
(str.charCodeAt(i)
>
0
&&
str.charCodeAt(i)
<
128
)
len
++
;
else
len
+=
2
;
return
len;
}
9、彻底屏蔽鼠标右键
<
body oncontextmenu
=
"
window.event.returnValue=false
"
>
或者:
<
body oncontextmenu
=
"
self.event.returnValue=false
"
>
或者:
<
body oncontextmenu
=
"
return false
"
>
10、防止剪切,复制,粘贴
<
body oncopy
=
"
return false
"
oncut
=
"
return false
"
onpaste
=
"
return false
"
>
11、关闭输入法
<
input type
=
"
text/password
"
style
=
"
ime-mode:disabled
"
>
<
textarea style
=
"
ime-mode:disabled
"
></
textarea
>
12、防止被人frame(盗链)
<
script
>
if
(top.location
!=
self.location)
top.location
=
self.location;
</
script
>
13、网页不能被另存为
<
noscript
><
iframesrc
=*
.html
></
iframe
></
noscript
>
14、按TAB键移动到下一个输入框时,光标停在文本框文字的最后,方便用户继续输入
<
script
>
function
moveEnd()
{
var
e
=
event.srcElement;
var
r
=
e.createTextRange();
r.moveStart('character',e.value.length);
r.collapse(
true
);
r.select();
}
</
script
>
<
input type
=
'text' value
=
'
0592
' onfocus
=
"
moveEnd()
"
>
15、判断上一页的来源(
我感觉
无效)
document.referrer
16、最小化、最大化、关闭窗口(关闭窗口:无效)
<
object id
=
'winMin' classid
=
"
clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11
"
>
<
param name
=
"
Command
"
value
=
"
Minimize
"
></
object
>
<
object id
=
'winMax' classid
=
"
clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11
"
>
<
param name
=
"
Command
"
value
=
"
Maximize
"
></
object
>
<
object id
=
'winClo' classid
=
"
clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11
"
>
<
param name
=
"
Command
"
value
=
"
Close
"
></
object
>
<
input type
=
'button' value
=
'最小化' onclick
=
winMin.Click()
>
<
input type
=
'button' value
=
'最大化' onclick
=
winMax.Click()
>
<
input type
=
'button' value
=
'关闭' onclick
=
winClo.Click()
>
17、parseInt("8")和parseInt("08")得到的结果是不一样的,前者得到"8"后者得到"0"。为什么?
语法:parseInt(numstring, [radix])
描述:numstring 必选项。要转换为数字的字符串。radix 可选项。在
2
和
36
之间的表示 numstring 所保存数字的进制的值。如果没有提供,则前缀为 '0x' 的字符串被当作十六进制,前缀为 '
0
' 的字符串被当作八进制。所有其它字符串都被当作是十进制的。
现在再回过来看,parseInt(
"
08
"
)用的是八进制,转换出错,所有得到
"
0
"
。
所以parseInt(
"
8
"
)和parseInt(
"
08
"
,
10
)得到的结果是一样的。
18、限制只能输入数字
只输入数字:
<
input type
=
"
text
"
size
=
"
25
"
onkeyup
=
"
value=value.replace(/[^\d]/g,'')
"
/>
Email:onkeyup
=
"
value=value.replace(/[^\w|-|@|.]/g,'')
"
19、onkeyup与onchange
onpropertychange能及时捕获属性值的变化
onkeyup事件,是在键盘按键松开时触发的
onchange事件是在文本框获得光标前的值被改变(没有改变时不会触发),离开文本框时触发的
20、将双引号替换掉
例:限制输入双引号
<
input type
=
"
text
"
onkeyup
=
"
this.value=this.value.replace(/\042/g,'')
"
/>
或者:
<input type="text" onkeyup="this.value=this.value.replace(/\x22/g,'')"/>
21、调试代码(跟java的差不多)
try
{
//
……
}
catch
(err){
alert(err+err.description);
}
22、过滤HTML
在评论的时候为了防止用户提交带有恶意的脚本,可以先过滤HTML标签,过滤掉双引号,单引号,符号
&
,符号
<
,符号
>
。
String.prototype.filterHtml
=
function
(){
return
this
.replace(
/&/
g,
"
&
"
).replace(
/</
g,
"
<
"
).replace(
/>/
g,
"
>
"
).replace(
/
"
/g,
"
&
#
34
;
"
).replace(/'/g,
"
&
#
39
;
"
);
}
23、readonly
在HTML中可以设置输入框属性readonly来控制不能输入,但是如果在JS下需要注意,要写成readOnly,注意大小写(readOnly
=
true
/
false
).
☆document.body.scrollTop的值始终为0
页面直接用<html>开头的话是没有问题的
使用DTD时用document.documentElement.scrollTop代替document.body.scrollTop就可以了。