2016年5月26日下午(妙味課堂js基礎-1筆記三)

来源:http://www.cnblogs.com/zzjeny/archive/2016/05/26/5531317.html
-Advertisement-
Play Games

本課內容:1. 函數返回值:return,沒有return的函數返回值是什麼?2. 函數傳參、arguments(可變參、不定參)3. arguments應用實例:任意數字求和4. 實例:CSS函數5. 獲取非行間樣式:currentStyle、getComputedStyle(obj, false ...


本課內容:
1. 函數返回值:return,沒有return的函數返回值是什麼?
2. 函數傳參、arguments(可變參、不定參)
3. arguments應用實例:任意數字求和
4. 實例:CSS函數
5. 獲取非行間樣式:currentStyle、getComputedStyle(obj, false)[attr]
6. 封裝可重用的getStyle()函數
7. 函數傳參的可讀性

一、函數返回值

    (1)什麼是函數返回值

      函數的執行結果

<script type="text/javascript">
        function sum(a,b) {
            return a+b;
        }
        alert(sum(12,6));
    </script

      可以沒有return

<script type="text/javascript">
        function show() {
      return; } alert(show());      //返回undefined
</script>

    (2)一個函數應該只返回一種類型的值

  1. 函數返回值:return,沒有return的函數返回值是什麼?

    沒有return或者return後面沒有東西,都會返回undefined。

二、函數傳參

  可變參(不定參):arguments(就是一個數組,存的是所有參數;)

<script type="text/javascript">
        function show() {
            alert(arguments.length);
        }
        show(12,5);
    </script>
//直接彈出2;用來獲取這個函數有多少個參數;

    在函數代碼中,使用特殊對象 arguments,開發者無需明確指出參數名,就能訪問它們。

    參數的個數可變,參數數組

  例子1:求和

    求所有參數的和

    (1)簡單的小例子

<script type="text/javascript">
        function sum(a,b,c) {
            alert(a+b+c);
        }
        sum(12,5,3);
    </script>

  可變參(不定參):

    求數組裡面所有數字的和:

 <script type="text/javascript">
        function sum() {
           var result=0;
            var i=0;
            for (i=0;i<arguments.length;i++){
                result+=arguments[i];
            }
            alert(result);
        }
        sum(12,5,3,6,8,12,3,4,4,5,6);
    </script>

  例子2:CSS函數

    判斷arguments.length

    給參數取名,增強可讀性

<style type="text/css">
        #div1{width: 200px;height: 200px;background: red;}
    </style>
    <script type="text/javascript">
       function css() {
           if(arguments.length==2){     //獲取
               return  arguments[0].style[arguments[1]];
           }
           else  if(arguments.length==3){       //設置
               arguments[0].style[arguments[1]]=arguments[2];
           }
       }
        window.onload=function () {
            var oBtn=document.getElementById("btn1");
            var oDiv=document.getElementById("div1");
             oBtn.onclick=function () {
                 //css(oDiv,"background","green");
                 alert(css(oDiv,"width"));
             }
        }
    </script>
</head>
<body>
    <input id="btn1"  type="button" value="樣式" />
    <div id="div1" ></div>
</body>

如果是上述代碼的話,彈出來沒有結果,原因是style只能用來讀取行間樣式;

<script type="text/javascript">
       function css() {
           if(arguments.length==2){     //獲取
               return  arguments[0].style[arguments[1]];
           }
           else  if(arguments.length==3){       //設置
               arguments[0].style[arguments[1]]=arguments[2];
           }
       }
        window.onload=function () {
            var oBtn=document.getElementById("btn1");
            var oDiv=document.getElementById("div1");
             oBtn.onclick=function () {
                 //css(oDiv,"background","green");
                 alert(css(oDiv,"width"));
             }
        }
    </script>
</head>
<body>
    <input id="btn1"  type="button" value="樣式" />
    <div id="div1" style="width: 200px;height: 200px;background: red;"></div>
</body>

  如果是這樣的話就可以獲取到寬度為彈出200px;

    問題:如何取非行間樣式(不能用來設置)? 

      ——obj.currentStyle[attr]

  <style>
        #div1 {width:100px; height:100px; background:red;}
    </style>
    <script type="text/javascript">
        window.onload=function () {
            var oDiv=document.getElementById('div1');
      //獲取計算後的樣式   //IE alert(oDiv.currentStyle.width); }
</script> </head> <body> <div id="div1"></div> </body>

  相容性:(這裡有問題,彈不出來!)

      ——getComputedStyle(obj, false)[attr]

<script type="text/javascript">
    window.onload=function (){
      var oDiv=document.getElementById('div1');
      //獲取計算後的樣式(當前樣式、最終樣式)
      //IE
      //alert(oDiv.currentStyle.width);
      //FF
      //alert(getComputedStyle(oDiv, false).width);
      if(oDiv.currentStyle){
          //IE
         alert(oDiv.currentStyle.width);    //IE下彈出
      }
      else{
          //FF
          alert(getComputedStyle(oDiv, false).width);  //FF下也可以彈出;
      }
    }
</script>
</head>
<body>
    <div id="div1"></div>
</body>

  下麵我們把這個封裝成為一個簡單的函數:

<script type="text/javascript">
    //哪個元素
    //哪個樣式
        function getStyle(obj, attr) {
            if(obj.currentStyle) {
                return obj.currentStyle[attr];
            }
            else {
                return getComputedStyle(obj, false)[attr];
            }
        }
        window.onload=function () {
            var oDiv=document.getElementById('div1');
            alert(getStyle(oDiv, 'backgroundColor'));  //width(單一樣式),fontSize(複合樣式).......
        }
    </script>
</head>
<body>
    <div id="div1"></div>
</body>

   關於參數和argument:

<script type="text/javascript">
    function show(a, b){
    alert(arguments[0]);
    }
    show(12, 6);
</script>

  最後簡化代碼:

<script type="text/javascript">
        function css(obj,attr,value) {
            if(arguments.length==2){     //獲取
                return getStyle(obj,attr);
            }
            else  if(arguments.length==3){       //設置
                obj.style[attr]=value;
            }
        }
        window.onload=function () {
            var oBtn=document.getElementById("btn1");
            var oDiv=document.getElementById("div1");
            oBtn.onclick=function () {
                css(oDiv,"background","green");
                alert(css(oDiv,"width"));
            }
        }
    </script>
</head>
<body>
<input id="btn1"  type="button" value="樣式" />
<div id="div1" style="width: 200px;height: 200px;background: red;"></div>
</body>

   最後,這裡還有關於底層的獲取元素CSS值之getComputedStyle方法熟悉沒有弄懂,後面有時間可以參考:

    http://www.zhangxinxu.com/wordpress/?p=2378


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 先看顯示效果: 對應HTML代碼: 對應元素習慣樣式: ...
  • 1.正則表達式到底是什麼東西? 在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。正則表達式就是用於描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。 很可能你使用過Windows/Dos下用於文件查找的通配符(wildcard),也就是*和?。如果你想查找某 ...
  • <head lang="en"> <meta charset="UTF-8"> <title></title> <style type="text/css"> .box{ display:block; height:350px; width:250px; background:#ddd; curso ...
  • 簡潔而神秘的語法: 正則表達式的語法非常簡潔,而且對於不熟悉正則表達式的人,看起來簡直很神秘。有時,正則表達式中看起來好像到處都充斥著反斜杠、圓括弧和方括弧。而只要理解正則表達式中每個字元串和元字元的作用,就能自己編寫正則表達式或者分析其他開發人員編寫的正則表達式。 元字元是指在正則表達式模式中具有... ...
  • 其實實際上實現中並不能讓password中顯示文字提示,但是我們在工作中有這樣的需求,當沒輸入東西的時候,框內有提示輸入密碼,但是當輸入東西的時候又顯示的是*號,那麼是如何實現的呢?其實原理很簡單,就是放兩個文本框,樣式以及定位都是一樣的。先將type為password的隱藏,只顯示type為tex ...
  • 一、什麼是正則表達式。 解析:在編寫處理字元串的程式或網頁時,經常會有查找符合某些複雜規則的字元串的需要。 正則表達式就是用於描述這些規則的工具。 用俗話說,正則表達式就是記錄文本規則的代碼。 二、入門。 我用一個故事與大家說明。 1)老師組織一個活動在電腦文本html.txt中查找帶"hi"開頭的 ...
  • 自我反思 學習 之前做的東西,用到table裡面數據的分頁小標簽都是用的插件,好看又方便,今天腦子抽抽了看了看人家的代碼,大寫的蒙圈,就找了找簡單的,還好俺這個小菜鳥還算能看懂,學者比划了兩下子,以後慢慢做的漂亮些就能用到項目裡面了,哈哈,我驕傲! 第一個:實現的很常見很簡單的顯示頁數翻頁 效果圖: ...
  • LN :跟著W3School學HTML 006 內容參考自W3School [HTML 教程][1] HTML段落 瀏覽器會自動地在段落的前後添加空行。(`` 是塊級元素) 不要忘記結束標簽。 實例解析 This is a paragraph This is another paragraph 效果 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...