麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

淺析js封裝和作用域

2019-11-20 22:32:35
字體:
來源:轉載
供稿:網友
基本的代碼如下
復制代碼 代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title> 
</title>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script type="text/javascript">   
      var text="test"; 
   var   t=new functionTest(text); 
    function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function ()
     {     
        alert(alertText);
     } 
      function alertTestInnert()
     {
        alert(alertText);
     } 
    }
      function alertTestOuter()
   {
        alert(text);
   }
    </script>
<body>
 <input type="button" id="btnSave" class="button" value="保存"  />
 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest;" />
</body>
</html>

再點擊保存,取消時需要一定的操作,第一次的代碼如上:
點擊保存,根本沒反應,很奇怪,這種最常用的jquery綁定事件竟然不起作用了。后來一比較才知道,其實自己忘了,綁定應該在$(document).ready(function () {})中進行;
js修改如下:
復制代碼 代碼如下:

 var text="test"; 
   $(document).ready(function () {
      var   t=new functionTest(text); 
 });   
    function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function ()
     {     
        alert(alertText);
     } 
      function alertTestInnert()
     {
        alert(alertText);
     } 
    }
      function alertTestOuter()
   {
        alert(text);
   }

修改后,點擊保存可以了,而且正確的傳遞了參數,這樣就可以保證在不同點的情況下傳遞不同的參數了。
但還有一種情況,頁面會動態生成一些標簽,這些標簽的點擊事件也需要處理。再次以取消按鈕為例,由于是動態生成,就不能使用和保存一樣的方法了。
只能使用onclick="javascript:t.AlertTest;"這種類似的綁定。于是有測試如下:
修改
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest;" />

點擊沒反應,修改如下
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:alertTestOuter;" />

點擊還是沒反應,也沒有錯誤,在修改如下:
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:alertTestOuter();" />

這次有反應了,看來是少了一對括號。修改為封裝的方法如下:
復制代碼 代碼如下:

<input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest();" />

點擊沒反應,提示Uncaught ReferenceError: t is not defined
看來是變量t沒有定義,作用域起作用了。于是修改js如下,也就是把變量t放到外邊,賦值放在里邊,就是如下:
復制代碼 代碼如下:

  var   t;
      var text="test"; 
   $(document).ready(function () {
          t=new functionTest(text); 
 });   
    function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function ()
     {     
        alert(alertText);
     } 
      function alertTestInnert()
     {
        alert(alertText);
     } 
    }
      function alertTestOuter()
   {
        alert(text);
   }

最后一步,如何給取消調用的方法傳遞參數?
第一步修改js如下,也就是把取消調用的函數改為需要傳遞參數的方法,代碼如下:
復制代碼 代碼如下:

  var   t;
      var text="test"; 
   $(document).ready(function () {
          t=new functionTest(text); 
 });   
    function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function (text)
     {     
        alert(text);
     }

      function alertTestInnert()
     {
        alert(alertText);
     } 
    }
      function alertTestOuter()
   {
        alert(text);
   }

相應的html修改如下:
復制代碼 代碼如下:

 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest('124');" />

點擊,看看是不是正確的傳遞了參數,一切正常,看來這樣就完成了。
最后整理js代碼:
把通用的js代碼放到一個js文件里,這里放到了common.js中,不同的代碼放在htm中,修改后的所有代碼如下:
復制代碼 代碼如下:

<html xmlns="http://www.w3.org/1999/xhtml">
<head><title> 
</title>
<script src="jquery-1.4.4.min.js" type="text/javascript"></script>
<script src="common.js" type="text/javascript"></script>
<script type="text/javascript"> 
      var   t;//需要定義的外邊,否則點擊取消時,不能訪問到變量t
      var text="test"; //傳遞的參數
   $(document).ready(function () {     
          t=new functionTest(text); //給t賦值,定義不能放在這里邊
 });
    </script>
<body>
 <input type="button" id="btnSave" class="button" value="保存"  />
 <input type="button" id="btnCancel" class="button" value="取消" onclick="javascript:t.AlertTest('124');" />
</body>
</html>

common.js的代碼:
復制代碼 代碼如下:

 function functionTest(text)
    {
          var alertText=text  
             $("#btnSave").click(function (e) {     
       alertTestInnert();   
    });            
          this.AlertTest= function (text)
     {     
        alert(text);
     }

      function alertTestInnert()
     {
        alert(alertText);
     } 
    }   
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人一区二区在线观看视频 | 中国av免费在线观看 | 色猫av| 精品一区二区三区网站 | 在线观看免费毛片视频 | 性生活香蕉视频 | 日本aⅴ在线 | 久久久精品视频免费看 | 久久久久久久亚洲视频 | 粉嫩蜜桃麻豆免费大片 | 亚洲情av | 91福利社在线 | 欧美成人精品欧美一级乱黄 | 九九精品在线播放 | 黄色片免费在线 | 成人免费观看49www在线观看 | 怦然心动50免费完整版 | 一区二区三区视频在线观看 | 在线观看视频亚洲 | 国产精品久久久久影院老司 | 日本在线播放一区二区三区 | 亚洲特黄 | 国产日韩三区 | 欧美一级美片在线观看免费 | 91网页视频入口在线观看 | 亚洲成人在线视频网 | 嗯~啊~弄嗯~啊h高潮视频 | 欧美综合成人 | 国产午夜亚洲精品午夜鲁丝片 | 久久露脸国语精品国产91 | 日本黄色免费观看视频 | 在线高清中文字幕 | 国产精品一区二区三区在线播放 | 久草在线新时代视觉 | 一区二区久久 | 国产亚洲精品久久久久婷婷瑜伽 | 亚洲免费永久 | 操操影视| 91网站免费在线观看 | 97zyz成人免费视频 | 欧日韩在线视频 |