javascript 传递事件到另一个页面的方法

JavaScript015

javascript 传递事件到另一个页面的方法,第1张

这很简单啊,你在创建个hidden元素,就行啦

function login(buttonId){

//假设buttonId是你点击的那个button的id

//你可以设置一个button为userLogin,另一个为adminLogin

var userType = document.createElement("input")

userType.type = "hidden"

userType.name = "userType"

if (buttonId == "userLogin"){

userType.value = "user"

}else if (buttonId == "adminLogin"){

userType.value = "admin"

}

//这样就创建了一个<input type="hidden" name="userType" value="user或者admin">

//然后添加到提交的那个form中

document.all.loginForm.appendChild(userType)

//最后提交form,后台就能得到这个参数了

document.all.loginForm.submit()

}

<!doctype html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Document</title>

<script>

window.addEventListener('load',function(){

// 点击t-1时同时触发t-2点击

document.getElementById('x-1').addEventListener('click',function(e){

console.log(e.target.id)

// 创建事件对象

var event = document.createEvent('HTMLEvents')

event.initEvent('click', false,false)

event.eventType = 'message'

// 把事件触发信息传递给兄弟节点

e.target.nextElementSibling.dispatchEvent(event)

})

document.getElementById('x-2').addEventListener('click',function(e){

console.log(e.target.id)

})

})

</script>

</head>

<body>

<ul>

<li id="x-1">t-1</li>

<li id="x-2">t-2</li>

</ul>

</body>

</html>

js中可以改变方法作用域和参数的方式有三种,apply,call,bind.

apply 和call类似第一个参数是方法的作用域,其它参数是方法的参数。不同的是apply的其它参数是个数组,数组的个数为参数的个数,call除开第一个参数其它参数方法参数,例子如下

function method() {

    console.log(this, arguments)

}

var a = 1

var b = 2, c = 3, d = 4

method.call(a, b, c, d)// 打印 [Number: 1] { '0': 2, '1': 3, '2': 4 }

method.apply(a, [b, c, d])// 同上 [Number: 1] { '0': 2, '1': 3, '2': 4 }

bind 和call参数传递方式一致,唯一区别是bind不会立即执行,只会更改作用域和方法参数,到真正执行方法时才会执行。

var t = method.bind(a, b)

t()// [Number: 1] { '0': 2 }

t = t.bind(null, c)

t()// [Number: 1] { '0': 2, '1': 3 }

t = t.bind(null, d)

t() // [Number: 1] { '0': 2, '1': 3, '2': 4 }

可以采用bind方法进行更改事件绑定的方法的参数及作用域。