JS傳參技巧總結

JS傳參技巧總結


1.隱式創建 html 標籤


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

2.window['data']

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

3.使用localStorage,cookie等存儲

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

特點:

1、localStorage 是持久存儲,不主動刪除 一直存在 sessionStorage 是臨時存儲,關閉瀏覽器數據就沒了

2、localStorage 可以多窗口共享 sessionStorage 不能多窗口共享數據

4.獲取地址欄方法

自己封裝的方法

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;
}

正則表達式方法

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.標籤綁定函數傳參






this拓展

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

var box = document.createElement("div");
box.innerHTML = "";
document.body.appendChild(box);
// name,age,friend
function alertInfo(val) {
console.log(val);
alert('大家好,我是' + val.dataset.name + ', 我今年' + val.dataset.age + '歲了,我的好朋友是' + val.dataset.friend + ' !')
}

event

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

根據 class 獲取當前的索引值,參數可以為 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-* 自定義屬性


var btn = document.querySelector("button")
btn.onclick = function () {
alert(this.dataset.name)
}

7.字符串傳參

單個參數

var name = 'xiaoyueyue',
age = 25;
var box = document.createElement("div");
box.innerHTML = '';
document.body.appendChild(box);
// name, age
function alertInfo(name, age, home, friend) {
alert("我是" + name)
}

多參傳遞

 var name = 'xiaoyueyue',
age = '25',
home = 'shanxi',
friend = 'heizi';
var params = """ + name + "","" + age + "","" + home + "","" + friend + """;
var box = document.createElement("div");
box.innerHTML = "";
document.body.appendChild(box);
// name, age,home,friend
function alertInfo(name, age, home, friend) {

alert("我是" + name + ',' + "我今年" + age + "歲了!")
}

複雜傳參

var data = [
{
"name": "xiaoyueyue",
"age": "25",
"home": "shanxi",
"friend": "heizi"
}
]
var box = document.createElement("div");
for (var i = 0; i < data.length; i++) {
box.innerHTML = "";
}
document.body.appendChild(box);
function alertInfo(id, name, age, home, friend) {
alert("我是" + name + "," + friend + "是我的好朋友")
}

8.arguments

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


function fenpei() {
var args = Array.prototype.slice.call(arguments);
alert("我是" + args[2] + "油品,數量為 " + args[1] + " 噸, id為 " + args[0])
}


分享到:


相關文章: