核心只要两行即可实现添加或移除classNamediv idabc namecodefunction removeClass(value){var kl
核心只要两行即可实现添加或移除className
<div id="abc" name="code">function removeClass(value){var kls,reg=1>0 &&(kls=this.className,reg=new RegExp('(^| )'+value+'( |$)'),reg.test(this.className) && (this.className=(kls.replace(reg,'$1')).replace(/ $/,''))); return this;};function addClass(value){var reg=1>0 &&(reg=new RegExp('(^| )'+value+'( |$)'),reg.test(this.className) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))));return this;};///removeClass.call(document.getElementById('abc'),'new');//addClass.call(document.getElementById('abc'),['new saw try']) 一次添加多个样式 addClass.call(addClass.call(removeClass.call(document.getElementById('abc'),'new'),'game'),'beta');
javascript确实很有意思 语法灵活 就看怎么玩
function addClass(value){ var reg=new RegExp('(^| )'+value+'( |$)'); reg.test(this.className) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))); return this; }
改为
function addClass(value){ (this.className.indexOf(value) != -1) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))); return this; }
更好
帮你省了一行,而且复杂度下降了一个层次function addClass(value){ var reg=new RegExp('(^| )'+value+'( |$)'); reg.test(this.className) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))); return this; }
改为
function addClass(value){ (this.className.indexOf(value) != -1) || (this.className==='' ? (this.className=value) : (this.className+=(' '+value))); return this; }
更好
帮你省了一行,而且复杂度下降了一个层次
你写的这个在功能上是不满足要求的,很简单的例子就是尝试给className为"sampleClass"的元素添加"sample"
23 楼 enix2212 2011-05-02 前端代码是为了看明白么
典型的程序猿的思维 前端代码很多时候就是为了安全 让人看不懂甚至去混淆 我这个已经封装完了 传递的参数也很明确 拿去用就好了 没必要去了解内部运作 jQuery的理念也是 统一接口 内部的高耦合使用者没必要了解 不看jquery源码能写出漂亮代码? 这个有不是写教科书 有必要写20行再加上注释 让别人了解怎么工作的么 较少复杂程度 写上注释 那是服务器语言 前端脚本上线前必须删除注释 压缩代码 混淆 不是一个纯正的FE相信你们也不会了解 服务器语言会经过编译等等手段 前端代码怎么实现加密 只能通过这些手段 莫非我脚本里面写上 我这用了个jsonp数据 是个公开接口 你也可以用我们公司的数据 而且我还告不了你 这样才算好代码?
请问 你们讨论前看我后面更新的代码了没有
比如说 让你去生成一个字符串10次
你是用for 生成 还是以下方法有技术含量
String.prototype.repeat=function(a){
return (new Array(a+1)).join(this);
};
alert('ab'.repeat(5));
编码 做事每个人都有自己的理念
职业也有规矩
前端代码的要求就是少 快 好 省
也许我现在还全部做不到
但是我希望大家能角色代入 不要以程序员的思维来对待 24 楼 vb2005xu 2011-05-02 // css class relative
this.hasClass = function(name) {
var re = new RegExp('(^| )' + name + '( |$)');
return re.test(this.ele.className) ;
};
this.addClass = function(name) {return this.toggleClass(name,true) ;};
this.removeClass = function(name) {return this.toggleClass(name,false) ;};
this.toggleClass = function (name,cond) {
if (typeof name == __undef) this.ele.className = '' ;
else {
var re = new RegExp('(^| )' + name + '( |$)');
var had = re.test(this.ele.className) ;
if (typeof cond != __undef){
if (cond){
if (!had) this.ele.className += ' ' + name;
}else
if (had) this.ele.className = this.ele.className.replace(re, ' ');
}else
this.ele.className = had ? this.ele.className.replace(re, ' ') : this.ele.className + ' ' + name ;
re = had = null ;
}
return this ;
}; 25 楼 cpdw 2011-05-03 这种问题有必要争个脸红脖子粗吗?无聊啊 26 楼 leelege 2011-05-03 楼主这么喜欢三元运算符,可以尝试多个条件下对三元运算符进行嵌套,那写出来的代码过一阵再去看……啧啧 27 楼 dfbdfbdfb 2011-05-04 支持楼主,有些人就是喜欢不看帖子的重点,鸡蛋里挑骨头,显摆 28 楼 tiannet 2011-05-04 enix2212 写道
而且我不认为 这个是对自己量身定做 试想谁会写class的时候去敲回车 就算有可能 但这个肯定不是所提倡的编码方式 我们没有为别人的错误买单 多开发99%的代码 而且我说过 我不是在写类库 没必要考虑所有人的感受
给你点建议:别人给你指出代码的问题其实是在帮助你,应该感谢才对,可楼主似乎很生气?这种行为要不得。
另外,对于写程序来说,强调的就是严谨啊!既然语法允许换行,那就应该考虑这种情况啊。
试想一下,项目组的某个成员正好用了你的这个函数,然后又刚好不小心把className换了行,那他得花费多长时间去找原因啊?
我们程序员写的大部分代码,不都是为了应对使用者的疏忽、不正常操作么?
29 楼 enix2212 2011-05-04 tiannet 写道enix2212 写道
而且我不认为 这个是对自己量身定做 试想谁会写class的时候去敲回车 就算有可能 但这个肯定不是所提倡的编码方式 我们没有为别人的错误买单 多开发99%的代码 而且我说过 我不是在写类库 没必要考虑所有人的感受
给你点建议:别人给你指出代码的问题其实是在帮助你,应该感谢才对,可楼主似乎很生气?这种行为要不得。
另外,对于写程序来说,强调的就是严谨啊!既然语法允许换行,那就应该考虑这种情况啊。
试想一下,项目组的某个成员正好用了你的这个函数,然后又刚好不小心把className换了行,那他得花费多长时间去找原因啊?
我们程序员写的大部分代码,不都是为了应对使用者的疏忽、不正常操作么?
在这个问题上猿还是回避吧
只能我们狮直接讨论 猿什么时候会写html了 30 楼 jamesmos 2011-05-04 enix2212 写道tiannet 写道enix2212 写道
而且我不认为 这个是对自己量身定做 试想谁会写class的时候去敲回车 就算有可能 但这个肯定不是所提倡的编码方式 我们没有为别人的错误买单 多开发99%的代码 而且我说过 我不是在写类库 没必要考虑所有人的感受
给你点建议:别人给你指出代码的问题其实是在帮助你,应该感谢才对,可楼主似乎很生气?这种行为要不得。
另外,对于写程序来说,强调的就是严谨啊!既然语法允许换行,那就应该考虑这种情况啊。
试想一下,项目组的某个成员正好用了你的这个函数,然后又刚好不小心把className换了行,那他得花费多长时间去找原因啊?
我们程序员写的大部分代码,不都是为了应对使用者的疏忽、不正常操作么?
在这个问题上猿还是回避吧
只能我们狮直接讨论 猿什么时候会写html了
我觉得你分这么开是真没必要的。话说javascript虽然在浏览器上跑,而且大部分时间都用来做交互和界面,但其实也算得上编程语言了。没有程序员的严谨,吃亏是迟早的事。
31 楼 stoneskin 2011-05-11 :哭笑
写javascript的也是猿。。。。
我们很多猿都是从写html过来的。。
现在有时还时不时回去写点script,改改css.