此文要跟大家分享的是在项目开发中积累的js问题解决方案和经验,文章标题javascript你可能不知道的事只是个噱头或者说是我感觉这些经验对那些大牛(或经验比较丰富的人)可能只能算得上比较基础的东西了,但这并不妨碍我写这篇博客——我想对其它不知道这些经验技巧或曾被这些问题困扰过的程序员,应该还是会有一定帮助的,哪怕只有一点点儿,也是让我比较宽慰和高兴的事。所以,无论你愿不愿意看,我都将这些经验分享给你,^_^。

  1.如果应该或本来正常显示的页面中的弹出层等,出现某些样式加载不上的情况(如:jquery-ui弹出层的样式加载不上),可能原因是:页面中存在重复的js文件引用

  2.在iframe中改变父窗体的url代码实现:window.top.location = http://www.huohu123.com/?src=qd;

  3.新窗口打开页面的另一种方法:

 1 <a class="d" title="<%#Eval("ZPName")%>" onclick="javascript:return;" href="ajax/CommonProcess.ashx?method=searchOtherArticle&id=<%#Eval("ZPID")%>&type=<%#Eval("ZPType")%>"
2 target="_blank">
3 <div>
4 <img onclick="FarwardToZpViewPage(this)" src='<%#BLL.Util.GetZuopinThumbImage(Eval("ZPDefaultImg").ToString())%>'
5 alt="" /></div>
6 </a>
7 <script type="text/javascript">
8 function FarwardToZpViewPage(obj) {
9 if (document.all) {
10 // For IE
11 obj.parentNode.parentNode.click();
12 }
13 }
14 </script>

  4.页面中的window.onload事件只会执行一次,如下:

    <script type="text/javascript">

        window.onload = function () {

            alert(new Date().getTime());

        };

        window.onload = function () {

            alert("ddfdfdfdfdf"); //——只会 弹出此提示

        };

      </script>

      原因分析如下:window事件——可以理解为一个事件对象(集合),其底层代码大概实现:var winEventObj={};  winEventObj.onload= functionA;winEventObj.onload= functionB; 这段代码就很清晰了:最终 winEventObj.onload的值 肯定为:functionB。

  

     5.js中对象是按引用传递的,如下:

       function test123() {
            var obj = new Object();
            obj.Num = 123;
            T1(obj);
            alert(obj.isValid);//---输出 true
        }

        function T1(obj) {
            obj.isValid = true;   
        }

  6.jQuery和DOM对象的区别,如下代码

  Test_Set和Test_Set2方法分别是在id为webTitle的标签的jQuery和DOM对象上设置(添加)一个showNo的属性,但不同的是,在jQuery对象上设置后再通过标签对象输出showNo的属性值却是'undefined',其原因,我的分析理解是:DOM对象(在内存中)存在真正的引用,而jQuery对象是其DOM对象的一个封装对象,并没有真实的引用存在

       function Test_Set() {
var obj = $("#webTitle")[0];
alert(obj);
obj.showNo = 121212;
alert(obj.showNo);
alert($("#webTitle")[0].showNo); //输出:121212
}

function Test_Set2() {
var obj = $("#webTitle");
obj.showNo = 121212;
alert(obj.showNo);
alert($("#webTitle").showNo); //输出:undefined
}

  7.&&(与运算符)的另外一种用法——让代码更简洁点儿,其用法具体可参见上一篇文章(改进版)jQuery表单验证插件formValidator的插件里,示例如下:         

  !_jQuery_formValidator_validJqObj_Array && (_jQuery_formValidator_validJqObj_Array = new Array());

      上面这行代码的最原始的写法是:

  if (_jQuery_formValidator_validJqObj_Array == null) {
            _jQuery_formValidator_validJqObj_Array = new Array();
     } 

  这样意思就很明确了。这种用法比较特殊,类似于C#中如下代码

        private PreferentialRuleDiscountRepository _repository = null;

private PreferentialRuleDiscountRepository Repository
{
get
{
return _repository ?? (_repository = new PreferentialRuleDiscountRepository());
}
}

  即如果&&左边的条件成立为true,则执行右边的代码。

  

  好了,目前能跟大家分享的就是上面这几点经验,再基础的都不能再写了,恐怕这些让人看了都很想拍砖了,呵呵... 

posted on 2012-02-03 15:55  know-more  阅读(2914)  评论(8编辑  收藏  举报

湖北诚万兴科技-专业微信小程序开发!

微信小程序开发一物一码红包系统开发iPhone序列号查询