PDA

View Full Version : سوال: چرا اين كد پاسخ نميده؟ DOM



mehdimalek
دوشنبه 10 اسفند 1388, 12:20 عصر
با سلام
كدي كه در زير ميارم نمونه ساده اي از مشكليه كه من با كد مشابه اون دارم. كلا اين كد داراي يه حلقه هست كه براي ايجاد چند دكمه و اضافه كردن خاصيت onclick به هر كدوم از دكمه ها استفاده ميشه و هر دكمه كه فشار داده ميشه بايد تابعي را با مقدار مختلف اجرا كنه. كد ساده اي هست اما توش موندم كه چرا جواب نميده يعني چرا onclick كار نمي كنه.:عصبانی++::عصبانی:
دوستان عزيزي كه كد رو ملاحظه مي كنن لطفا اگه راهش رو پيدا كردن منو راهنمايي كنن.
مرسي از توجهتون:لبخند::خجالت:


<html>
<head>
<title>onclick_in_loop.html</title>
<script language="javascript">
arr_1=new Array('A','B','C','D','E','F','G');
arr_2=new Array('value A','value B','value C','value D','value E','value F','value G');
function f1(vl){
alert(':::.... ('+vl+') ....:::');
}
//***
function f2(){
for(T=0; T<(arr_1.length); T++){
tg=document.createElement('input');
tg.setAttribute('type','button');
tg.setAttribute('value','button ('+arr_1[T]+')');
tg.onclick=function(){
f1(arr_2[T]);
}
document.getElementById('d1').appendChild(tg);
}
}
</script>
</head>

<body>
<p>&nbsp;</p>
<input type="button" name="b1" id="b1" value="Click" onclick="f2();" />
<hr />
<div align="center" name="d1" id="d1"></div>
</body>

</html>

Exception
دوشنبه 10 اسفند 1388, 13:09 عصر
برای اینکه مشکل کد رو بهتر متوجه بشی، اینجوری ساده اش کردم:

for(T=0; T<7; T++){
tg=document.createElement('input');
tg.setAttribute('type','button');
tg.setAttribute('value','button ('+T+')');
tg.onclick=function(){
alert(T);
}
document.getElementById('d1').appendChild(tg);
}
خودت با این کد سر و کله بزنی میفهمی مشکل چیه!

اما برای رفع مشکل میتونی شبیه این عمل کنی:

for(T=0; T<7; T++){
tg=document.createElement('input');
tg.setAttribute('type','button');
tg.setAttribute('value','button ('+T+')');
tg.T=T;
tg.onclick=function(){
alert(this.T);
}
document.getElementById('d1').appendChild(tg);
}
(قسمتهای رنگی تغییر کرده)