PDA

View Full Version : کار نکردن متغیر داخل تابع



olampiad
دوشنبه 13 مرداد 1393, 09:29 صبح
سلام و خسته نباشید ب اساتید
به این کد های من ی نگا بندازید


var tr_td=document.querySelectorAll('tr td:nth-of-type(3)');
var tr_td_input=document.querySelectorAll('tr td input');

var array_m_td=Array();
var array_v_td=Array();

for(var i=0;i<tr_td.length;i++){

array_m_td.push(tr_td[i].textContent);
array_v_td.push(tr_td_input[i].value);

}
for(var i=0;i<tr_td.length;i++){

tr_td_input[i].onblur=function(){

alert(array_m_td[i]);
if(this.value===''){
alert('پرش کن');
this.style.background='#ccc';
}

}
}





حالا ب این قسمت از کد بالا هم ی نگا بندازید.

alert(array_m_td[i]);

چرا وقتی که این کد رو اجرا میکنم ب جای اینکه مقدار برگردنداند،undefune برمیگرداند.
چرا وقتی یک مقدار رو داخل تابع میارم اجرا نمیشه.
در کد بالا من array_m_td[i] رو از داخل حلقه ب داخل تابع آوردو ولی کار نکرد.
مشکلش از کجاست؟
چ طور این مشکل حل میشه؟
ممنون

sadegh1362
سه شنبه 14 مرداد 1393, 08:42 صبح
سلام و خسته نباشید ب اساتید
به این کد های من ی نگا بندازید


var tr_td=document.querySelectorAll('tr td:nth-of-type(3)');
var tr_td_input=document.querySelectorAll('tr td input');

var array_m_td=Array();
var array_v_td=Array();

for(var i=0;i<tr_td.length;i++){

array_m_td.push(tr_td[i].textContent);
array_v_td.push(tr_td_input[i].value);

}
for(var i=0;i<tr_td.length;i++){

tr_td_input[i].onblur=function(){

alert(array_m_td[i]);
if(this.value===''){
alert('پرش کن');
this.style.background='#ccc';
}

}
}





حالا ب این قسمت از کد بالا هم ی نگا بندازید.

alert(array_m_td[i]);

چرا وقتی که این کد رو اجرا میکنم ب جای اینکه مقدار برگردنداند،undefune برمیگرداند.
چرا وقتی یک مقدار رو داخل تابع میارم اجرا نمیشه.
در کد بالا من array_m_td[i] رو از داخل حلقه ب داخل تابع آوردو ولی کار نکرد.
مشکلش از کجاست؟
چ طور این مشکل حل میشه؟
ممنون
سلام
یک بار بدون اینکه مقدار alert(array_m_td[i]); رو در function بذارید مقادیرش رو چاپ کنید ببینید آیا مقداری درون آرایه وجود داره؟

olampiad
سه شنبه 14 مرداد 1393, 10:44 صبح
این کار رو انجام دادم
بله مقداری دارد و مقدار را درست برمیگرداند.
ولی وقتی درون تابع میارم کار نمیکند.
ممنون

olampiad
سه شنبه 14 مرداد 1393, 11:27 صبح
من کدم رو ب این شکل در آوردم.
ولی این کد هم مشکل داره.
وقتی که صفحه اجرا میشه بیست و پنج بار alert انجان میشود،بدون هیچ گونه دستکاری
ولی
من در کد خودم گفتم هر وقت blur شد تابع yess اجرا شود
ولی این تابع با بالا اومدن صفحه اجرا شده و 25 بار alert میشود
مشکل از کجاست؟



function yess(jsjsjs){

alert('blue');

if(this.value===''){
alert('پرش کن');
this.style.background='#ccc';
}



if(this.value==array_m_td[i]){
alert('مساوی نیست');
}

}





var tr_td=document.querySelectorAll('tr td:nth-of-type(3)');
var tr_td_input=document.querySelectorAll('tr td input');

var array_m_td=Array();
var array_v_td=Array();

for(var i=0;i<tr_td.length;i++){

array_m_td.push(tr_td[i].textContent);
array_v_td.push(tr_td_input[i].value);

}


for(var i=0;i<array_m_td.length;i++){
tr_td_input[i].onblur=yess(array_m_td[i]);
}

olampiad
سه شنبه 14 مرداد 1393, 11:35 صبح
به این کد ی نگا بندازید
من کد رو ب این صورت هم نوشتم ولی در پنجره alert به جای مقدار این متن رو آورد
objectFocusEvent
این یعنی چی؟
ممنون



var tr_td=document.querySelectorAll('tr td:nth-of-type(3)');
var tr_td_input=document.querySelectorAll('tr td input');

var array_m_td=Array();
var array_v_td=Array();

for(var i=0;i<tr_td.length;i++){

array_m_td.push(tr_td[i].textContent);
array_v_td.push(tr_td_input[i].value);

}


for(var i=0;i<array_m_td.length;i++){

var jjs=array_v_td[i];
tr_td_input[i].onblur=function(jjs){


alert(jjs);

if(this.value===''){
alert('پرش کن');
this.style.background='#ccc';
}



if(this.value==array_m_td[i]){
alert('مساوی نیست');
}


}


}

sadegh1362
چهارشنبه 15 مرداد 1393, 15:00 عصر
به این کد ی نگا بندازید
من کد رو ب این صورت هم نوشتم ولی در پنجره alert به جای مقدار این متن رو آورد
objectFocusEvent
این یعنی چی؟
ممنون



var tr_td=document.querySelectorAll('tr td:nth-of-type(3)');
var tr_td_input=document.querySelectorAll('tr td input');

var array_m_td=Array();
var array_v_td=Array();

for(var i=0;i<tr_td.length;i++){

array_m_td.push(tr_td[i].textContent);
array_v_td.push(tr_td_input[i].value);

}


for(var i=0;i<array_m_td.length;i++){

var jjs=array_v_td[i];
tr_td_input[i].onblur=function(jjs){


alert(jjs);

if(this.value===''){
alert('پرش کن');
this.style.background='#ccc';
}



if(this.value==array_m_td[i]){
alert('مساوی نیست');
}


}


}


سلام
ببخشید که دیر جواب میدم سرم خیلی شلوغه. اما اینطوری نمیشه فهمید من باید کد شما و صفحه رو داشته باشم تا بتونم کمکتون کنم . و خودم هم تست کنم مثل دفعات قبل.