<!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>
<title></title>
<body>
<div id="show">hi </div>
<input type="button" id="Button1" value=" Button1 " />
<input type="button" id="Button2" value=" Button2 " />
<input type="button" id="Button3" value=" Button3 " />
<input type="button" id="Button4" value=" Button4 " />
</body>
</html>
<script language="javascript" type="text/javascript">
var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
document.getElementById(SS[i]).onclick = new Function("alertMsg(\'" + divobj + "\'," + (i+1) + ")");
}
document.getElementById("Button4").onclick = function () {
alertMsg(divobj,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
</script>重点就在这个动态函数里的 divobj 该怎样写才能跟 点击 Button4 一样的效果
new Function("alertMsg(\'" + divobj + "\'," + (i+1) + ")");
var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
document.getElementById(SS[i]).onclick = new Function(alertMsg(SD,i+1));
}
document.getElementById("Button4").onclick = function () {
alertMsg(this,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
document.getElementById(SS[i]).onclick = function(){alertMsg(this)};
}
document.getElementById("Button4").onclick = function () {
alertMsg(this);
}
function alertMsg(obj) {
alert(obj.id)
}
//刚贴出来的代码没成功
document.getElementById(SS[i]).onclick = function(){alertMsg(this)};这个并不是我想要的那样
我要实现的是,在点击 Button 后传入的对象参数不是自己,而是一个已经定义的
var divobj = window.document.getElementById("show");
------------------------------
用function(){}可以传入对象参数,但i参数就已经不是每次循环的哪个i了.也就是点Button1不是显示
hi 1,而是hi 4,点Button2 也不会显示hi 2,也是显示hi 4.也就是说i的值不是本次循环的值而是最后一个值.用new Function{};i传入的值可以是各次循环的数值.var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
document.getElementById(SS[i]).onclick = function(){
alertMsg(divobj,(i+1));
};
}
document.getElementById("Button4").onclick = function () {
alertMsg(divobj,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
var arr=new Array();
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
arr[SD.id]=i+1;
document.getElementById(SS[i]).onclick = function(){
alertMsg(divobj,arr[this.id]);//有点取巧,不知道是否你想要的
};
}
document.getElementById("Button4").onclick = function () {
alertMsg(divobj,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
new Function()用的时候没看到传入什么参数
刚才尝试了N种方法,网上搜了又搜,暂时没找到答案,也许不行,也许可以
var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
SD.alt = i + 1; //设置个alt属性省点事,呵呵
document.getElementById(SS[i]).onclick = function(){
alertMsg(divobj, this.alt);
};
}
document.getElementById("Button4").onclick = function () {
alertMsg(divobj,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
var divobj = window.document.getElementById("show");
var SS = ["Button1", "Button2", "Button3"];
for (var i = 0; i < SS.length; i++) {
var SD = document.getElementById(SS[i]);
document.getElementById(SS[i]).onclick = new Function("alertMsg(divobj,"+i+"+1)");//你试试看,呵呵
}
document.getElementById("Button4").onclick = function () {
alertMsg(divobj,4);
}
function alertMsg(obj, v) {
alert(obj.innerHTML + v)
}
f();用不用new看实际情况 反正 FUNCTION返回一个匿名function