Javascript函数中传递带空格的参数
通常在页面中要让某些内容点击后产生点击事件(非页面跳转)都会使用onclick,但是这样不适于需要传递参数的情况,于是写成直接调用Javascript函数的方式:<a href=javascript:somefunction(args)>content</a>。注意,这么写是有问题的,问题就在于somefunction中的参数args的值不能含有空格,否则浏览器会认为空格后面的内容是<a>标签的某个属性,正确的写法应该是用引号将javascript:somefunction(args)引起来。另外还有一种方法可不必加这对引号,先将可能带空格的参数用escape函数处理一下,然后在somefunction中用unescape函数解码就行了。值得注意的是用encodeURI、decodeURI加解码却不能成功。
encodeURIComponent和decodeURIComponent三对组合之间的区别:
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
简单总结一下用法,在不经过URL的时候,即纯Javascript调用用escape;涉及URL时,通常用encodeURI对整个URL进行处理,仅当URL中含有特殊参数时,对该特殊参数局部使用encodeURIComponent。
一、函数
function trim(str){ //删除左右两端的空格
return str.replace(/(^\s )|(\s $)/g, "")
}
function ltrim(str){ //删除左边的空格
return str.replace(/(^\s*)/g,"")
}
function rtrim(str){ //删除右边的空格
return str.replace(/(\s*$)/g,"")
}
函数调用 trim(str)
二、js对象的方法
String.prototype.trim=function(){
return this.replace(/(^\s )|(\s $)/g, "")
}
String.prototype.ltrim=function(){
return this.replace(/(^\s*)/g,"")
}
String.prototype.rtrim=function(){
return this.replace(/(\s*$)/g,"")
}
类中方法调用 str.trim()
三、将公共方法提取到一个或多个公共js文件,需要的时候直接引用;
在写JS代码的时候,大家可以会发现这样现象:document.write("
1
2
3
")
结果:
1
2
3
无论在输出的内容中什么位置有多少个空格,显示的结果好像只有一个空格。
这是因为浏览器显示机制,对手动敲入的空格,将连续多个空格显示成1个空格。
解决方法:
1.
使用输出html标签 来解决
document.write(" "+"1"+""+"23")
结果:
1
23
2.
使用CSS样式来解决
document.write("<span
style='white-space:pre'>"+"
1
2
3
"+"</span>")
结果:
1
2
3
在输出时添加“white-space:pre
”样式属性。这个样式表示"空白会被浏览器保留"
以上这篇JS输出空格的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。