<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>如何向事件绑定函数传递参数??</title>
<script language="javascript">function onload(){
var Item = document.getElementById("MM");
Item.onmousemove = fn; //问题在这!!!请教: 这里如何向fn函数传递参数而又不会让事件失效????????
}var fn = function(e){ //摸一摸两百多,我这里放一个参数e来收钱,一旦你摸到我你必须得给我钱(传参数),不然我不让你玩,哼..
if(e == undefined){
alert("你这色鬼,不给钱也想玩?滚!!");
return false;
}else{
alert("我是很美很害羞的MM,你摸到我啦!谢谢你给我"+e+"块钱");
}
}
</script>
</head><body onload="onload();" >
<div id="MM" style="width:400px; height:250px; background:#060; color:#FFF; margin:0 auto; text-align:center;">我是很美丽很害羞的MM,你摸摸我看看..</div>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>如何向事件绑定函数传递参数??</title>
<script language="javascript">function onload(){
var Item = document.getElementById("MM");
Item.onmousemove = fn; //问题在这!!!请教: 这里如何向fn函数传递参数而又不会让事件失效????????
}var fn = function(e){ //摸一摸两百多,我这里放一个参数e来收钱,一旦你摸到我你必须得给我钱(传参数),不然我不让你玩,哼..
if(e == undefined){
alert("你这色鬼,不给钱也想玩?滚!!");
return false;
}else{
alert("我是很美很害羞的MM,你摸到我啦!谢谢你给我"+e+"块钱");
}
}
</script>
</head><body onload="onload();" >
<div id="MM" style="width:400px; height:250px; background:#060; color:#FFF; margin:0 auto; text-align:center;">我是很美丽很害羞的MM,你摸摸我看看..</div>
</body>
</html>
发这么多帖,我都回回混分~
<script language="javascript">function onload(){
var Item = document.getElementById("MM");
Item.onmousemove = function()
{
fn(100);//这就是答案、 };
var fn = function(e){ //摸一摸两百多,我这里放一个参数e来收钱,一旦你摸到我你必须得给我钱(传参数),不然我不让你玩,哼..
if(e == undefined){
alert("你这色鬼,不给钱也想玩?滚!!");
return false;
}else{
alert("我是很美很害羞的MM,你摸到我啦!谢谢你给我"+e+"块钱");
}
}
</script>
像你这个,还可以用的方法是
Item.e=100;
Item.onmousemove=fn;
function fn()
{
var e=event.srcElement.e;//这样也可以获得这个参数,简单吧
}
function Class(){
this.money = 250;
function playGirl(){
Item.onmousemove = function(this.money){fn(this.money)};
//试问你这里的参数this.money还能正常引用上面定义的250吗?不能也...}}
function Class(){
this.money = 250;
function playGirl(){
Item.onmousemove = Item.onmousemove = function()
{
fn(this.money);//试问你这里的参数this.money还能正常引用上面定义的250吗?不能也...};
};
//试问你这里的参数this.money还能正常引用上面定义的250吗?不能也...}}
var money = 250;
function playGirl(){
Item.onmousemove = function(){
fn(money);//试问你这里的参数this.money还能正常引用上面定义的250吗?不能也...
};
};//试问你这里的参数this.money还能正常引用上面定义的250吗?不能也...
playGirl();//这个函数都没有运行怎么有结果啊
}
onclick="javascript:addHeight($('#LeakedDiv'))"可以将参数放入到一个控件中
var money=this.money;
不久可以了!局部变量在局部函数中是可以访问的
还有我说的第二种方法也是不会有这个问题的
item.e=this.money;
item.onmouseover=fn;
function fn()
{
var money=event.srcElement.e;
}
这个问题我回答第四次了,日。
我写控件的时候遇到的参数传递问题比你这个复杂多了也都解决了的的
}
var money="xxxxx"; //定义参数
var Item = document.getElementById("MM");
Item.onmousemove = bind(money); //这边改成利用闭包实现试试
}//加这段试试
function bind(e)
{
return function(){fn(e);};
}var fn = function(e){ //摸一摸两百多,我这里放一个参数e来收钱,一旦你摸到我你必须得给我钱(传参数),不然我不让你玩,哼..
if(e == undefined){
alert("你这色鬼,不给钱也想玩?滚!!");
return false;
}else{
alert("我是很美很害羞的MM,你摸到我啦!谢谢你给我"+e+"块钱");
}
}
</script>
return function () {
fun.apply(obj, [1, 2]);
//[1, 2]是传给ResponseHandle的参数,见过别人这样取参数的var args = Array.prototype.slice.call(arguments);
}
}
function AjaxClass() {
this.URL = ""; this.Type = '';
this.XHR = this.Create();
this.Result = '';
}
AjaxClass.prototype =
{
Create: function () {
var xmlHttp = false;
if (window.XMLHttpRequest) {
//在非IE中创建XMLHttpRequest对象
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
//高版本IE
} catch (error1) {//创建IP高版本XMLHttpRequest对象失败
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//低版本IE
} catch (error2) { //创建IP低版本XMLHttpRequest对象失败
xmlHttp = false;
}
}
}
if (!xmlHttp) {
alert("创建XMLHttpRequest对象失败!程序无法运行,请检查您的浏览器类型与版本!");
return false;
}
return xmlHttp;
},
ResponseHandle: function () {
//alert(this.XHR); 关键之处:问题出在这里,通过this引用的成员比如this.XHR都会显示undefined,我要的就是能正常引用上面的成员。
if (this.XHR.readyState == 1) { this.Result = "正在等待执行..."; }
if (this.XHR.readyState == 4 || this.XHR.readyState == "complete") {
debugger;
alert("等于4啦");
if (this.XHR.status == 200) {
if (this.Type == 'XML') {
this.Result = this.XHR.responseXML;
}
else {
this.Result = this.XHR.responseText;
}
}
}
},
Get: function (TagetURL, ResponseType) {
this.URL = TagetURL + "&randcode=" + (new Date()).valueOf();
if (ResponseType != undefined && TagetURL != undefined) {
this.Type = ResponseType.toUpperCase();
}
if (window.XMLHttpRequest) {
this.XHR.open("get", this.URL);
this.XHR.onreadystatechange = Bind(this,this.ResponseHandle);//关键之处,问题源头在这里。通过这里引用this.ResponseHandle函数,注意这里不能写成this.ResponseHandle(),否则没效果,所以没有()就不能传送参数了。 this.XHR.send(null);
}
else {
this.XHR.open("get", this.URL, true);
this.XHR.onreadystatechange = this.ResponseHandle; this.XHR.send();
}
}
}
var obj = new AjaxClass();
obj.Get("TreeHandler.ashx?id=0");
return function () {
fun.apply(obj, [1, 2]);
//[1, 2]是传给ResponseHandle的参数,见过别人这样取参数的var args = Array.prototype.slice.call(arguments);
}
}
function AjaxClass() {
this.URL = ""; this.Type = '';
this.XHR = this.Create();
this.Result = '';
}
AjaxClass.prototype =
{
Create: function () {
var xmlHttp = false;
if (window.XMLHttpRequest) {
//在非IE中创建XMLHttpRequest对象
xmlHttp = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
//高版本IE
} catch (error1) {//创建IP高版本XMLHttpRequest对象失败
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//低版本IE
} catch (error2) { //创建IP低版本XMLHttpRequest对象失败
xmlHttp = false;
}
}
}
if (!xmlHttp) {
alert("创建XMLHttpRequest对象失败!程序无法运行,请检查您的浏览器类型与版本!");
return false;
}
return xmlHttp;
},
ResponseHandle: function () {
//alert(this.XHR); 关键之处:问题出在这里,通过this引用的成员比如this.XHR都会显示undefined,我要的就是能正常引用上面的成员。
if (this.XHR.readyState == 1) { this.Result = "正在等待执行..."; }
if (this.XHR.readyState == 4 || this.XHR.readyState == "complete") {
debugger;
alert("等于4啦");
if (this.XHR.status == 200) {
if (this.Type == 'XML') {
this.Result = this.XHR.responseXML;
}
else {
this.Result = this.XHR.responseText;
}
}
}
},
Get: function (TagetURL, ResponseType) {
this.URL = TagetURL + "&randcode=" + (new Date()).valueOf();
if (ResponseType != undefined && TagetURL != undefined) {
this.Type = ResponseType.toUpperCase();
}
if (window.XMLHttpRequest) {
this.XHR.open("get", this.URL);
this.XHR.onreadystatechange = Bind(this,this.ResponseHandle);//关键之处,问题源头在这里。通过这里引用this.ResponseHandle函数,注意这里不能写成this.ResponseHandle(),否则没效果,所以没有()就不能传送参数了。 this.XHR.send(null);
}
else {
this.XHR.open("get", this.URL, true);
this.XHR.onreadystatechange = this.ResponseHandle; this.XHR.send();
}
}
}
var obj = new AjaxClass();
obj.Get("TreeHandler.ashx?id=0");