Heim > Web-Frontend > js-Tutorial > Hauptteil

So übergeben Sie Parameter in Javascript

藏色散人
Freigeben: 2021-06-27 10:26:32
Original
6468 Leute haben es durchsucht

So übergeben Sie Parameter in JavaScript: Erstellen Sie zunächst eine entsprechende JS-Datei. Übergeben Sie dann die Parameter über „Funktion AlertInfo (Name, Alter, Zuhause, Freund) {...}“.

So übergeben Sie Parameter in Javascript

Die Betriebsumgebung dieses Artikels: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

Wie übergebe ich Parameter in Javascript?

Zusammenfassung der JS-Parameterübergabefähigkeiten

1. HTML-Tags implizit erstellen

<input type="hidden" name="tc_id" value="{{tc_id}}">
Nach dem Login kopieren
Diese Methode wird im Allgemeinen mit Ajax verwendet. Der obige Wert verwendet eine Vorlagen-Engine

2.window['data']

window["name"] = "the window object";
Nach dem Login kopieren

3 . Verwenden Sie localStorage, Cookies usw. zum Speichern von

window.localStorage.setItem("name", "xiaoyueyue");
window.localStorage.getItem("name");
Nach dem Login kopieren
Features: Cookie, localStorage, sessionStorage, indexDB
5MNimmt nicht teil Wie Sie der obigen Tabelle entnehmen können, wird Cookie nicht mehr zur Speicherung empfohlen. Wenn keine großen Datenspeicheranforderungen bestehen, können Sie <code>localStorage und sessionStorage verwenden. Versuchen Sie bei Daten, die sich nicht wesentlich ändern, localStorage zum Speichern zu verwenden. Andernfalls können Sie sessionStorage zum Speichern verwenden. Hinweis: Beim Speichern von Daten vom Typ object ignoriert diese Deep-Copy-Methode Funktionen und undefiniert4. Holen Sie sich die Adressleistenmethode
    Kapseln Sie sie sich selbst Methode
    Features cookie localStorage sessionStorage indexDB
    Datenlebenszyklus Im Allgemeinen durch den Server Generate bestimmt, können Sie die Ablaufzeit festlegen Solange die Seite nicht bereinigt wird, bleibt sie immer vorhanden Größe 4K 5M
    Unbegrenzt Mit dem Server kommunizieren Es wird jedes Mal im Header übertragen, was sich auf die Anforderungsleistung auswirkt Nimmt nicht teil
    Nimmt nicht teil
    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"}
    Nach dem Login kopieren
    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;
    }
    Nach dem Login kopieren

    2. Methode für reguläre Ausdrückecookie 已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStoragesessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage 存储。

    注意点:存储object类型数据,此深拷贝方法会忽略掉函数和 undefined
    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;
    }
    Nach dem Login kopieren

    4.获取地址栏方法

    1. 自己封装的方法
    <!--base-->
    <button id="test1" onclick="alert(id)">test1</button>
    
    <!--高级-->
    <button
      id="test"
      name="123"
      yue="xiaoyueyue"
      friend="heizi"
      onclick="console.log(this.getAttribute(&#39;yue&#39;),this.getAttribute(&#39;friend&#39;))"
    >
      test
    </button>
    Nach dem Login kopieren

    2.正则表达式方法

    var box = document.createElement("p");
    box.innerHTML =
      "<button id=&#39;1&#39; data-name=&#39;xiaoyueyue&#39; data-age=&#39;25&#39; data-friend=&#39;heizi&#39; onclick=&#39;alertInfo(this.dataset)&#39;>点击</button>";
    document.body.appendChild(box);
    
    // name,age,friend
    function alertInfo(data) {
      alert(
        "大家好,我是" +
          data.name +
          ", 我今年" +
          data.age +
          "岁了,我的好朋友是" +
          data.friend +
          " !"
      );
    }
    Nach dem Login kopieren

    5.标签绑定函数传参

      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;
      },
    Nach dem Login kopieren

    this 拓展

    使用 this 传参,在使用 art-template 中琢磨出来的,再也不用只传递一个 id 拼接成好几个参数了!happy!

    <button data-name="xiaoyueyue">点击</button>
    Nach dem Login kopieren
    这里需要注意一点:存储的 data—含有大写的单词 =》这里会统一转化为小写,比如:data-orderId = “2a34fb64a13211e8a0f00050568b2fdd”,在实际取值的时候为this.dataset.orderid;

    event

    既然可以使用 this,那么在事件当中event.target方法也是可以的:

    根据 class 获取当前的索引值,参数可以为 event 对象
    var btn = document.querySelector("button");
    btn.onclick = function() {
      alert(this.dataset.name);
    };
    Nach dem Login kopieren

    6.HTML5 data-* 自定义属性

    var name = "xiaoyueyue",
      age = 25;
    
    var box = document.createElement("p");
    box.innerHTML = "<button onclick=\"alertInfo(&#39;" + name + "&#39;)\">点击</button>";
    document.body.appendChild(box);
    
    // name, age
    function alertInfo(name, age, home, friend) {
      alert("我是" + name);
    }
    Nach dem Login kopieren
      var name = 'xiaoyueyue',
          age = '25',
          home = 'shanxi',
          friend = 'heizi',
          DQ = "&quot;"; // 双引号的超文本标记语言
    
        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=&#39;alertInfo(" + params + ")&#39;>点击</button>";
        console.log(box)
        document.body.appendChild(box);
    
    
        // name, age,home,friend
        function alertInfo(name, age, home, friend) {
          alert("我是" + name + ',' + "我今年" + age + "岁了!")
    Nach dem Login kopieren

    7.字符串传参

    单个参数

    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=&#39;btn&#39;  onclick=&#39;alertInfo(id,\"" +
        data[i].name +
        &#39;","&#39; +
        data[i].age +
        &#39;","&#39; +
        data[i].home +
        &#39;","&#39; +
        data[i].friend +
        "\")&#39;>点击</button>";
    }
    box.innerHTML = html;
    document.body.appendChild(box);
    
    function alertInfo(id, name, age, home, friend) {
      alert("我是 " + name + " , " + friend + " 是我的好朋友");
    }
    Nach dem Login kopieren

    多参传递

    <button
      onclick="fenpei(&#39;f233c7a290ae11e8a0f00050568b2fdd&#39;,&#39;100&#39;,&#39;0号 车用柴油(Ⅴ)&#39;)"
    >
      分配
    </button>
    Nach dem Login kopieren

    复杂传参

    function fenpei() {
      var args = Array.prototype.slice.call(arguments);
      alert("我是" + args[2] + "油品,数量为 " + args[1] + " 吨, id为 " + args[0]);
    }
    Nach dem Login kopieren

    8.arguments

    arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用 arguments 对象在函数中引用函数的参数。它是一个类数组的对象。

    【推荐学习:javascript高级教程

    // 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&#39;t include form fields without names
            if (field.name.length) {
              parts.push(
                encodeURIComponent(field.name) +
                  "=" +
                  encodeURIComponent(field.value)
              );
            }
        }
      }
      return parts.join("&");
    }
    Nach dem Login kopieren
    <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>获取参数</button>
    Nach dem Login kopieren

    9.form 表单

    借助form

    document.querySelector("button").onclick = function() {
      console.log("param: " + serialize(document.getElementById("formData"))); // param: ordersaleCode=&extractType=0
    };
    Nach dem Login kopieren
    5. Übergabe von Parametern für die Etikettenbindung

    var Event = (function() {
      var clientList = {},
        pub,
        sub,
        remove;
    
      var cached = {};
    
      sub = function(key, fn) {
        if (!clientList[key]) {
          clientList[key] = [];
        }
        // 使用缓存执行的订阅不用多次调用执行
        cached[key + "time"] == undefined ? clientList[key].push(fn) : "";
        if (cached[key] instanceof Array && cached[key].length > 0) {
          //说明有缓存的 可以执行
          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) {
          //初始默认缓存
          cached[key] = Array.prototype.slice.call(arguments, 0);
          return false;
        }
    
        for (var i = 0, fn; (fn = fns[i++]); ) {
          // 再次发布更新缓存中的 data 参数
          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
      };
    })();
    Nach dem Login kopieren

    diese Erweiterung

    Verwenden Sie diesen Parameter, um Parameter zu übergeben, und denken Sie über die Verwendung von art-template nach Wenn es herauskommt, müssen Sie nicht mehr nur eine ID übergeben und diese in mehrere Parameter aufteilen! Glücklich!

    // app.js
    App({
      onLaunch: function(e) {
        // 注册 storage,这是第二条
        wx.Storage = Storage;
        // 注册发布订阅模式
        wx.yue = Event;
      }
    });
    Nach dem Login kopieren

    Hier ist etwas zu beachten: Gespeicherte Daten – Wörter mit Großbuchstaben => werden einheitlich in Kleinbuchstaben umgewandelt, zum Beispiel: data-orderId = „2a34fb64a13211e8a0f00050568b2fdd“, wenn der tatsächliche Wert this.dataset.orderid ;<blockquote><h3>event</h3></blockquote>Da dies verwendet werden kann, ist die Methode <code>event.target auch im Ereignis verfügbar:
    • Erhalten Sie den aktuellen Indexwert und die Parameter entsprechend Die Klasse kann ein Ereignisobjekt sein Komplexe Parameterübergabe
      // 添加收货地址页面订阅
       onLoad: function (options) {
              wx.yue.sub("addAddress", function (data) {
                  y.setData({
                      addAddress: data
                  })
              })
       }
      /**
       * 生命周期函数--监听页面隐藏
       */
       onHide: function () {
          // 取消多余的事件订阅
          wx.Storage.removeItem("addAddress");
      },
       onUnload: function () {
          // 取消多余的事件订阅
          wx.yue.remove("addAddress");
      }
      Nach dem Login kopieren
    • 8.arguments

    arguments-Objekte sind lokale Variablen, die in allen (Nicht-Pfeil-)Funktionen verfügbar sind. Sie können die Parameter einer Funktion innerhalb einer Funktion mithilfe des Arguments-Objekts referenzieren. Es ist ein Array-ähnliches Objekt.

      【Empfohlenes Lernen: Javascript-Tutorial für Fortgeschrittene]
    • // 传递地址页面获取好数据传递
      wx.yue.pub("addAddress", data.info);
      // 补充跳转返回
      Nach dem Login kopieren
      rrreee
    • 9.form-Formular
      Mit der form-Form übergibt Ajax Serialisierungsparameter
    • rrreee
    • Chestnut:
    rrreeerrreee
    10. Veröffentlichen und abonnieren, um die Übertragung komplexer Logikparameter abzuwickeln
    Unterstützt zuerst das Abonnieren und dann das Veröffentlichen und das Veröffentlichen zuerst dann abonnieren🎜🎜 🎜Methodenquellcode🎜🎜rrreee🎜Beispiele für die Verwendung in WeChat-Miniprogrammen: 🎜🎜🎜Globale Mount-Verwendung 🎜🎜rrreee🎜🎜Verwendungsbeispiele🎜🎜rrreeerrree🎜Hinweis: Achten Sie auf die Deinstallation ing nach der verwendung der daten, und bedienen wenn die Seite ist geschlossen 🎜🎜

    Das obige ist der detaillierte Inhalt vonSo übergeben Sie Parameter in Javascript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:php.cn
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!