调试了半天,全都是复制代码惹得祸!

简介:

  上次由于一个'\t'让我郁闷了半天,本以为自己已经在debug的时候很小心了,没有想到今天又载了一会hitwall.gif。错误非常之低级,而debug费力又还非常之大,真是让人哭笑不得。所以干脆在blog的随笔里专门开辟一个叫"Debug中的滑铁卢"的分类,专门记录Debug时一些stupid的小事。

    其实Coding是挺枯燥的,这个我在说Whidbey的Snippets功能时就说过,而且特别是重复的Coding,更是让人烦躁angry_smile.gif。但是不管枯燥也好烦躁也罢,还是要写不。这时我们常常也会学学网站编辑,动用动用Ctrl+C & Ctrl+V大法。这不手艺欠佳,今天我就载在这个Ctrl+C、V上了,看来注定当不成网站编辑了(就这追求啊,浪费了我这么多时间看你这么些天瞎摆活了cry_smile.gif!)。

    今天这个问题其实超级的简单,真是too simple, too young ...,我在GetShowTab()方法前定义了两个方法,我写成这样的:

None.gif DimTreeTab.prototype.ShowMemberTree =  function()
None.gif {
None.gif };
None.gif
None.gif DimTreeTab.prototype.ShowSearchMember =  function()
None.gif {
None.gif };
None.gif
None.gif DimTreeTab.prototype.GetShownTab =  function()
None.gif {
None.gif      if (  this.m_Panels[0].m_Element.style.display == 'inline' )
None.gif     {
None.gif          //  . . .
None.gif
     }
None.gif };

    这时发现这两个函数里面需要用 this.m_Panels[0].m_Element.style.display。好啊,Ctrl+C & Ctrl+V,搞定!

None.gif DimTreeTab.prototype.ShowMemberTree =  function()
None.gif {
None.gif     this.m_Panels[0].m_Element.style.display == 'inline' 
None.gif     this.m_Panels[0].m_Element.style.display == 'inline' 
None.gif };
None.gif
None.gif DimTreeTab.prototype.ShowSearchMember =  function()
None.gif {
None.gif     this.m_Panels[0].m_Element.style.display == 'inline' 
None.gif     this.m_Panels[0].m_Element.style.display == 'inline' 
None.gif };

    改拨改拨,ok了~~

None.gif DimTreeTab.prototype.ShowMemberTree =  function()
None.gif {
None.gif     this.m_Panels[0].m_Element.style.display == 'inline' 
None.gif     this.m_Panels[ 1].m_Element.style.display == ' none
None.gif };
None.gif
None.gif DimTreeTab.prototype.ShowSearchMember =  function()
None.gif {
None.gif     this.m_Panels[0].m_Element.style.display == ' none
None.gif     this.m_Panels[ 1].m_Element.style.display == 'inline' 
None.gif };

    运行起来完全没有效果,由于对DHTML中的element引用关系比较复杂,老是觉得可能是没有引用到正确的element,就在this.m_Panels[n].m_Element里查啊查啊,查到花儿都谢了,还是没有查到问题emdgust.gif。最后都调试成这样了:

None.gifDimTreeTab.prototype.ShowMemberTree =  function()
None.gif{
None.gif    alert( this.m_Panels[0].m_Element.outerHTML);
None.gif     this.m_Panels[0].m_Element.style.display == 'inline';
None.gif    alert( this.m_Panels[0].m_Element.outerHTML);
None.gif    alert( this.m_Panels[1].m_Element.outerHTML);    
None.gif     this.m_Panels[1].m_Element.style.display == 'none';
None.gif    alert( this.m_Panels[1].m_Element.outerHTML);    
None.gif};
None.gif
None.gifDimTreeTab.prototype.ShowSearchMember =  function()
None.gif{
None.gif    alert( this.m_Panels[0].m_Element.outerHTML);
None.gif     this.m_Panels[0].m_Element.style.display == 'none';
None.gif    alert( this.m_Panels[0].m_Element.outerHTML);
None.gif    alert( this.m_Panels[1].m_Element.outerHTML);    
None.gif     this.m_Panels[1].m_Element.style.display == 'inline';
None.gif    alert( this.m_Panels[1].m_Element.outerHTML);    
None.gif};

    才猛然发现,怎么赋值是"=="啊!!!hitwall.gifhitwall.gifhitwall.gif。正确的应该是:

None.gifDimTreeTab.prototype.ShowMemberTree =  function()
None.gif{
None.gif     this.m_Panels[0].m_Element.style.display = 'inline';
None.gif     this.m_Panels[1].m_Element.style.display = 'none';
None.gif};
None.gif
None.gifDimTreeTab.prototype.ShowSearchMember =  function()
None.gif{
None.gif     this.m_Panels[0].m_Element.style.display = 'none';
None.gif     this.m_Panels[1].m_Element.style.display = 'inline';
None.gif};

    可能算不上什么教训,但是还是可以注意几点。Coding的时候,因该:

    打些字;
    查问题先查简单的;
    实在不行了,散散步回来做;
    让team里的哥们给看一下...


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

目录
相关文章
学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
学妹跑过来问我为啥Xshell 打不开了,让我帮她处理下【手把手讲解】
|
Python
试一试
试一试
|
编解码 iOS开发 异构计算
3分钟安装fcpx10.6.5最新 小白一看就会
Final Cut Pro 是Mac OS平台上最好的视频剪辑软件,Final Cut Pro为原生64位软件,基于Cocoa编写,支持多路多核心处理器,支持GPU加速,支持后台渲染,可编辑从标清到4K的各种分辨率视频,ColorSync管理的色彩流水线则可保证全片色彩的一致性。 经过完整而彻底的重新设计后,Final Cut Pro 为后期制作工作流程的方方面面增添了无与伦比的速度、质量和灵活性。
3分钟安装fcpx10.6.5最新 小白一看就会
|
编解码
还是越界惹的祸-MS抢救记之二
还是越界惹的祸-MS抢救记之二
3分钟安装Dropzone 4 小白一看就会
Dropzone 是一款Mac上的文件拖拽操作增强工具,这款软件可以让我们把大部分工作都通过拖拽来完成,比如保存文本、发送邮件、FTP上传、打开应用等等,只需要将文件拖拽到菜单栏上的窗口中即可,并且我们完全可以定制化这些操作,可以在官网上下载定制好的各种动作。
3分钟安装Dropzone 4 小白一看就会
|
Java 调度 数据库
新手一看就懂的线程池!
那相信大家也能感受到,其实用多线程是很麻烦的,包括线程的创建、销毁和调度等等,而且我们平时工作时好像也并没有这样来 new 一个线程,其实是因为很多框架的底层都用到了线程池。 线程池是帮助我们管理线程的工具,它维护了多个线程,可以降低资源的消耗,提高系统的性能。 并且通过使用线程池,我们开发人员可以更好的把精力放在任务代码上,而不去管线程是如何执行的,实现任务提交和执行的解藕。 本文将从是何、为何、如何的角度来讲解线程池:
160 0
新手一看就懂的线程池!
|
程序员 Windows
有了它,再也不用担心我的截图了
有了它,再也不用担心我的截图了
218 0
有了它,再也不用担心我的截图了
|
算法 Java
别在网上乱找代码了,找了一段代码突然爆了!!!
本人是做游戏服务器开发的,碰到一个需求,给符某些要求的玩家的发送道具奖励,奖励的数量根据离线的天数计算。 这个需求实现起来很简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策划的算法,计算出道具种类与数量,发一封邮件给玩家就可以了。
新手也能看懂,挑选服务器其实很简单
“一分钱一分货”这个说法,并不能让所有客户满意。那如何找到最优价格呢,本文提供一些方法
2282 0
|
架构师 算法 Java
不要网上乱拷贝代码了!一段网上找的代码把公司服务器崩了!
碰到一个需求,给服某些要求的玩家的发送道具奖励,奖励的数量根据离线的天数计算。这个需求实现起来很简单,只需要在玩家上线的时候计算上次离线时间和当前时间间隔的天数,然后根据策划的算法,计算出道具种类与数量,发一封邮件给玩家就可以了。