将var full传递给函数b的最佳方法是什么?我不想使用全局变量。返回是唯一的选择。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
<style>
.aaa, .bbb, .ccc { width:100px; height:100px;background-color:#ccc;margin-bottom:5px;}
</style>
<body class="123">
<p id="ptest"></p>
<p class="aaa" id="aaaid"></p>
<p class="bbb" id="bbbid"></p>
<p class="ccc" id="cccid"></p>
<div></div>
</body>
<script type="text/javascript">
$("body").click(function(e){
var name = $(e.target)[0].nodeName;
var nameid = $(e.target)[0].id;
var classname = $(name+"#"+nameid).attr('class');
var full = name+"#"+nameid;
console.log(nameid);
function b(){
alert(full);
};
});
</script>
答案 0 :(得分:6)
您可以通过如下定义将变量传递给函数:
function b(x) {
alert(x);
}
然后通过声明其名称并将变量作为参数传递来调用它:
b(full);
所以在你的代码的上下文中:
$("body").click(function(e){
var name = $(e.target)[0].nodeName;
var nameid = $(e.target)[0].id;
var classname = $(name+"#"+nameid).attr('class');
var full = name+"#"+nameid;
console.log(nameid);
function b(x){
alert(x);
};
b(full);
});
答案 1 :(得分:1)
参数?这里有什么东西我不见了吗?
function b(x){ alert(x); };
用
打电话b(full);
答案 2 :(得分:1)
// define b
function b(full) {
alert(full);
}
实际上,您没有使用全局变量。你在绑定到body元素的JQuery匿名函数中定义它们。
答案 3 :(得分:1)
除非你不希望函数b存在,或者在click函数之外使用,否则我会将它移到匿名函数之外。然后只需在定义中指定参数,然后像普通的
一样传递它们实施例
<script type="text/javascript">
$("body").click(function(e){
var name = $(e.target)[0].nodeName;
var nameid = $(e.target)[0].id;
var classname = $(name+"#"+nameid).attr('class');
var full = name+"#"+nameid;
console.log(nameid);
b(full);
});
function b(full)
{
alert(full);
};
</script>