久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      javascript怎么傳參數(shù)

      javascript傳參數(shù)的方法:首先創(chuàng)建一個相應(yīng)的js文件;然后通過“function alertInfo(name, age, home, friend) {…}”實(shí)現(xiàn)傳參即可。

      javascript怎么傳參數(shù)

      本文操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

      javascript怎么傳參數(shù)?

      JS傳參技巧總結(jié)

      1.隱式創(chuàng)建 html 標(biāo)簽

      <input type="hidden" name="tc_id" value="{{tc_id}}">

      這種方法一般配合 ajax,上面的 value 使用了模板引擎

      2.window['data']

      window["name"] = "the window object";

      3.使用 localStorage,cookie 等存儲

      window.localStorage.setItem("name", "xiaoyueyue"); window.localStorage.getItem("name");

      特點(diǎn):cookie,localStorage,sessionStorage,indexDB

      特性 cookie localStorage sessionStorage indexDB
      數(shù)據(jù)生命周期 一般由服務(wù)器生成,可以設(shè)置過期時(shí)間 除非被清理,否則一直存在 頁面關(guān)閉就清理 除非被清理,否則一直存在
      數(shù)據(jù)存儲大小 4K 5M 5M 無限
      與服務(wù)端通信 每次都會攜帶在 header 中,對于請求性能影響 不參與 不參與 不參與

      從上表可以看到,cookie 已經(jīng)不建議用于存儲。如果沒有大量數(shù)據(jù)存儲需求的話,可以使用 localStoragesessionStorage 。對于不怎么改變的數(shù)據(jù)盡量使用 localStorage 存儲,否則可以用 sessionStorage 存儲。

      注意點(diǎn):存儲object類型數(shù)據(jù),此深拷貝方法會忽略掉函數(shù)和 undefined

      var obj = {   type: undefined,   text: "xiaoyueyue",   methord: function() {     alert("I am an methord");   } };  localStorage.setItem("data", JSON.stringify(obj)); console.log(JSON.parse(localStorage.getItem("data"))); // {text: "xiaoyueyue"}

      4.獲取地址欄方法

      1. 自己封裝的方法
      function parseParam(url) {   var paramArr = decodeURI(url)       .split("?")[1]       .split("&"),     obj = {};   for (var i = 0; i < paramArr.length; i++) {     var item = paramArr[i];     if (item.indexOf("=") != -1) {       var tmp = item.split("=");       obj[tmp[0]] = tmp[1];     } else {       obj[item] = true;     }   }   return obj; }

      2.正則表達(dá)式方法

      function GetQueryString(name) {   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");   var r = window.location.search.substr(1).match(reg);   if (r != null) return unescape(r[2]);   return null; }

      5.標(biāo)簽綁定函數(shù)傳參

      <!--base--> <button id="test1" onclick="alert(id)">test1</button>  <!--高級--> <button   id="test"   name="123"   yue="xiaoyueyue"   friend="heizi"   onclick="console.log(this.getAttribute('yue'),this.getAttribute('friend'))" >   test </button>

      this 拓展

      使用 this 傳參,在使用 art-template 中琢磨出來的,再也不用只傳遞一個 id 拼接成好幾個參數(shù)了!happy!

      var box = document.createElement("p"); box.innerHTML =   "<button id='1' data-name='xiaoyueyue' data-age='25' data-friend='heizi' onclick='alertInfo(this.dataset)'>點(diǎn)擊</button>"; document.body.appendChild(box);  // name,age,friend function alertInfo(data) {   alert(     "大家好,我是" +       data.name +       ", 我今年" +       data.age +       "歲了,我的好朋友是" +       data.friend +       " !"   ); }

      這里需要注意一點(diǎn):存儲的 data—含有大寫的單詞 =》這里會統(tǒng)一轉(zhuǎn)化為小寫,比如:data-orderId = “2a34fb64a13211e8a0f00050568b2fdd”,在實(shí)際取值的時(shí)候?yàn)?code>this.dataset.orderid;

      event

      既然可以使用 this,那么在事件當(dāng)中event.target方法也是可以的:

      根據(jù) class 獲取當(dāng)前的索引值,參數(shù)可以為 event 對象

        var getIndexByClass =  function (param) {     var element = param.classname ? param : param.target;     var className = element.classname;     var domArr = Array.prototype.slice.call(document.querySelectorAll('.' + className));     for (var index = 0; index < domArr.length; index++) {       if (domArr[index] === element) {         return index;       }     }     return -1;   },

      6.HTML5 data-* 自定義屬性

      <button data-name="xiaoyueyue">點(diǎn)擊</button>
      var btn = document.querySelector("button"); btn.onclick = function() {   alert(this.dataset.name); };

      7.字符串傳參

      單個參數(shù)

      var name = "xiaoyueyue",   age = 25;  var box = document.createElement("p"); box.innerHTML = "<button onclick="alertInfo('" + name + "')">點(diǎn)擊</button>"; document.body.appendChild(box);  // name, age function alertInfo(name, age, home, friend) {   alert("我是" + name); }

      多參傳遞

        var name = 'xiaoyueyue',       age = '25',       home = 'shanxi',       friend = 'heizi',       DQ = "&quot;"; // 雙引號的超文本標(biāo)記語言      var params = "&quot;" + name + "&quot;,&quot;" + age + "&quot;,&quot;" + home + "&quot;,&quot;" + friend + "&quot;";     var params2 = DQ + name + DQ + ',' + DQ + age + DQ + ',' + DQ + home + DQ + ',' + DQ + friend + DQ;     var box = document.createElement("p");     box.innerHTML = "<button onclick='alertInfo(" + params + ")'>點(diǎn)擊</button>";     console.log(box)     document.body.appendChild(box);       // name, age,home,friend     function alertInfo(name, age, home, friend) {       alert("我是" + name + ',' + "我今年" + age + "歲了!")

      復(fù)雜傳參

      var data = [   {     name: "xiaoyueyue",     age: "25",     home: "shanxi",     friend: "heizi"   } ];  var box = document.createElement("p"),   html = "";  for (var i = 0; i < data.length; i++) {   html +=     "<button id='btn'  onclick='alertInfo(id,"" +     data[i].name +     '","' +     data[i].age +     '","' +     data[i].home +     '","' +     data[i].friend +     "")'>點(diǎn)擊</button>"; } box.innerHTML = html; document.body.appendChild(box);  function alertInfo(id, name, age, home, friend) {   alert("我是 " + name + " , " + friend + " 是我的好朋友"); }

      8.arguments

      arguments對象是所有(非箭頭)函數(shù)中都可用的局部變量。你可以使用 arguments 對象在函數(shù)中引用函數(shù)的參數(shù)。它是一個類數(shù)組的對象。

      【推薦學(xué)習(xí):javascript高級教程】

      <button   onclick="fenpei('f233c7a290ae11e8a0f00050568b2fdd','100','0號 車用柴油(Ⅴ)')" >   分配 </button>
      function fenpei() {   var args = Array.prototype.slice.call(arguments);   alert("我是" + args[2] + "油品,數(shù)量為 " + args[1] + " 噸, id為 " + args[0]); }

      9.form 表單

      借助form表單,ajax 傳遞序列化參數(shù)

      // form表單序列化,摘自JS高程 function serialize(form) {   var parts = [],     field = null,     i,     len,     j,     optLen,     option,     optValue;    for (i = 0, len = form.elements.length; i < len; i++) {     field = form.elements[i];      switch (field.type) {       case "select-one":       case "select-multiple":         if (field.name.length) {           for (j = 0, optLen = field.options.length; j < optLen; j++) {             option = field.options[j];             if (option.selected) {               optValue = "";               if (option.hasAttribute) {                 optValue = option.hasAttribute("value")                   ? option.value                   : option.text;               } else {                 optValue = option.attributes["value"].specified                   ? option.value                   : option.text;               }               parts.push(                 encodeURIComponent(field.name) +                   "=" +                   encodeURIComponent(optValue)               );             }           }         }         break;        case undefined: //fieldset       case "file": //file input       case "submit": //submit button       case "reset": //reset button       case "button": //custom button         break;        case "radio": //radio button       case "checkbox": //checkbox         if (!field.checked) {           break;         }       /* falls through */        default:         //don't include form fields without names         if (field.name.length) {           parts.push(             encodeURIComponent(field.name) +               "=" +               encodeURIComponent(field.value)           );         }     }   }   return parts.join("&"); }

      栗子:

      <form id="formData">   <p class="pop-info">     <label for="ordersaleCode">訂單編號:</label>     <input       type="text"       id="ordersaleCode"       name="ordersaleCode"       placeholder="請輸入訂單編號"     />   </p>   <p class="pop-info">     <label for="extractType">配送方式:</label>     <select id="extractType" name="extractType" class="mySelect">       <option value="0" selected>配送</option>       <option value="1">自提</option>     </select>   </p> </form> <button>獲取參數(shù)</button>
      document.querySelector("button").onclick = function() {   console.log("param: " + serialize(document.getElementById("formData"))); // param: ordersaleCode=&extractType=0 };

      10. 發(fā)布訂閱處理復(fù)雜邏輯傳參

      支持先訂閱后發(fā)布,以及先發(fā)布后訂閱

      • 方法源碼
      var Event = (function() {   var clientList = {},     pub,     sub,     remove;    var cached = {};    sub = function(key, fn) {     if (!clientList[key]) {       clientList[key] = [];     }     // 使用緩存執(zhí)行的訂閱不用多次調(diào)用執(zhí)行     cached[key + "time"] == undefined ? clientList[key].push(fn) : "";     if (cached[key] instanceof Array && cached[key].length > 0) {       //說明有緩存的 可以執(zhí)行       fn.apply(null, cached[key]);       cached[key + "time"] = 1;     }   };   pub = function() {     var key = Array.prototype.shift.call(arguments),       fns = clientList[key];     if (!fns || fns.length === 0) {       //初始默認(rèn)緩存       cached[key] = Array.prototype.slice.call(arguments, 0);       return false;     }      for (var i = 0, fn; (fn = fns[i++]); ) {       // 再次發(fā)布更新緩存中的 data 參數(shù)       cached[key + "time"] != undefined         ? (cached[key] = Array.prototype.slice.call(arguments, 0))         : "";       fn.apply(this, arguments);     }   };   remove = function(key, fn) {     var fns = clientList[key];     // 緩存訂閱一并刪除     var cachedFn = cached[key];     if (!fns && !cachedFn) {       return false;     }     if (!fn) {       fns && (fns.length = 0);       cachedFn && (cachedFn.length = 0);     } else {       if (cachedFn) {         for (var m = cachedFn.length - 1; m >= 0; m--) {           var _fn_temp = cachedFn[m];           if (_fn_temp === fn) {             cachedFn.splice(m, 1);           }         }       }       for (var n = fns.length - 1; n >= 0; n--) {         var _fn = fns[n];         if (_fn === fn) {           fns.splice(n, 1);         }       }     }   };   return {     pub: pub,     sub: sub,     remove: remove   }; })();

      在微信小程序中使用的例子:

      • 全局掛載使用
      // app.js App({   onLaunch: function(e) {     // 注冊 storage,這是第二條     wx.Storage = Storage;     // 注冊發(fā)布訂閱模式     wx.yue = Event;   } });
      • 使用實(shí)例
      // 添加收貨地址頁面訂閱  onLoad: function (options) {         wx.yue.sub("addAddress", function (data) {             y.setData({                 addAddress: data             })         })  } /**  * 生命周期函數(shù)--監(jiān)聽頁面隱藏  */  onHide: function () {     // 取消多余的事件訂閱     wx.Storage.removeItem("addAddress"); },  onUnload: function () {     // 取消多余的事件訂閱     wx.yue.remove("addAddress"); }
      // 傳遞地址頁面獲取好數(shù)據(jù)傳遞 wx.yue.pub("addAddress", data.info); // 補(bǔ)充跳轉(zhuǎn)返回

      注意:使用完成數(shù)據(jù)后要注意卸載,在頁面被關(guān)閉時(shí)操作

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號