论坛首页 Web前端技术论坛

核心只要两行即可实现添加或移除className

浏览 10755 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (8)
作者 正文
   发表时间:2011-05-01  
int08h 写道
算了,每个人都有自己的坚持自己的理念,编程说低端点就是敲敲键盘,说高端点其实是每个人自己的哲学,也没啥好争的


风度啊!如此涵养。关注你
0 请登录后投票
   发表时间:2011-05-02  
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;  
}


更好
帮你省了一行,而且复杂度下降了一个层次
0 请登录后投票
   发表时间:2011-05-02  
rainsilence 写道
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"

0 请登录后投票
   发表时间:2011-05-02   最后修改: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));




编码 做事每个人都有自己的理念
职业也有规矩
前端代码的要求就是少 快 好 省
也许我现在还全部做不到
但是我希望大家能角色代入 不要以程序员的思维来对待
0 请登录后投票
   发表时间: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 ;
};
0 请登录后投票
   发表时间:2011-05-03  
这种问题有必要争个脸红脖子粗吗?无聊啊
0 请登录后投票
   发表时间:2011-05-03  
楼主这么喜欢三元运算符,可以尝试多个条件下对三元运算符进行嵌套,那写出来的代码过一阵再去看……啧啧
0 请登录后投票
   发表时间:2011-05-04  
支持楼主,有些人就是喜欢不看帖子的重点,鸡蛋里挑骨头,显摆
0 请登录后投票
   发表时间:2011-05-04  
enix2212 写道


而且我不认为 这个是对自己量身定做 试想谁会写class的时候去敲回车 就算有可能 但这个肯定不是所提倡的编码方式 我们没有为别人的错误买单 多开发99%的代码 而且我说过 我不是在写类库 没必要考虑所有人的感受


给你点建议:别人给你指出代码的问题其实是在帮助你,应该感谢才对,可楼主似乎很生气?这种行为要不得。

另外,对于写程序来说,强调的就是严谨啊!既然语法允许换行,那就应该考虑这种情况啊。
试想一下,项目组的某个成员正好用了你的这个函数,然后又刚好不小心把className换了行,那他得花费多长时间去找原因啊?
我们程序员写的大部分代码,不都是为了应对使用者的疏忽、不正常操作么?
0 请登录后投票
   发表时间:2011-05-04  
tiannet 写道
enix2212 写道


而且我不认为 这个是对自己量身定做 试想谁会写class的时候去敲回车 就算有可能 但这个肯定不是所提倡的编码方式 我们没有为别人的错误买单 多开发99%的代码 而且我说过 我不是在写类库 没必要考虑所有人的感受


给你点建议:别人给你指出代码的问题其实是在帮助你,应该感谢才对,可楼主似乎很生气?这种行为要不得。

另外,对于写程序来说,强调的就是严谨啊!既然语法允许换行,那就应该考虑这种情况啊。
试想一下,项目组的某个成员正好用了你的这个函数,然后又刚好不小心把className换了行,那他得花费多长时间去找原因啊?
我们程序员写的大部分代码,不都是为了应对使用者的疏忽、不正常操作么?


在这个问题上猿还是回避吧

只能我们狮直接讨论 猿什么时候会写html了
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics