javascript你可能不知道的事

來源:互聯網
上載者:User

  此文要跟大家分享的是在項目開發中積累的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,則執行右邊的代碼。

  

  好了,目前能跟大家分享的就是上面這幾點經驗,再基礎的都不能再寫了,恐怕這些讓人看了都很想拍磚了,呵呵... 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.