ورود

View Full Version : گفتگو: مشکل با getElementById



Bahram0110
جمعه 21 تیر 1387, 15:45 عصر
سلام

من آی دی 2تا div رو بصورت پارامتر به یه تابع می فرستم :


onClick="my_func('div1', 'div2')"




function my_func(divnumber1, divnumber2)
{
document.getElementById(divnumber1).innerHTML=xmlH ttp.responseText;
document.getElementById(divnumber2).style.display = "none";
}
ولی عمل نمی کنه و خطای type mismatch می ده


کسی می دونه مشکل از کجاست؟؟

Bahram0110
شنبه 22 تیر 1387, 21:05 عصر
سلام
صورت سوال رو آسون کردم

ممنون می شم کمکم کنید :)

eAmin
شنبه 22 تیر 1387, 22:23 عصر
سلام.

به نظر من 99% مشکل از این قسمت هست:

document.getElementById(divnumber1).innerHTML=xmlH ttp.responseText;

شئی xmlHttp باید توی خود تابع باشه، در غیر اینصورت به مشکل بر می خورید!

اینجوری:

function my_func(divnumber1, divnumber2)
{
var xmlHttp = new XMLHttpRequest();
document.getElementById(divnumber1).innerHTML=xmlH ttp.responseText;
document.getElementById(divnumber2).style.display = "none";
}
اگه متوجه نشدی، بعدا یک مثال واست می زنم...

Bahram0110
شنبه 22 تیر 1387, 23:46 عصر
ممنون
امتحان می کنم

Bahram0110
شنبه 22 تیر 1387, 23:57 عصر
متاسفانه 1 درصده کار خودشو کرد
کد اصلی اینه :

function stateChanged(divwait, divcontent)
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById(divcontent).innerHTML=xmlH ttp.responseText;
document.getElementById(divwait).style.display = "none";
}
}

اینم گذاشتم تو خود تابع ولی بازم جواب نداد:

var xmlHttp
xmlHttp=GetXmlHttpObject()

eAmin
یک شنبه 23 تیر 1387, 11:07 صبح
سلام.

می تونی کل سورس جاوااسکریپت رو اینجا بزاری؟

Bahram0110
یک شنبه 23 تیر 1387, 11:20 صبح
سلام


function accjax(url, divwait, divcontent)
{
document.getElementById(divwait).style.display = "";
var xmlHttp
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{
alert ("Your Web Browser does not Support Ajax Technology!")
return
}
xmlHttp.onreadystatechange=stateChanged(divwait, divcontent)
xmlHttp.open("GET",url,true)
xmlHttp.send(null)
}
function stateChanged(divwait, divcontent)
{
var xmlHttp = new XMLHttpRequest();
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById(divcontent).innerHTML=xmlH ttp.responseText;
document.getElementById(divwait).style.display = "none";
}
}
function whois(domain, ext, divwait, divcontent)
{
if (domain == ""){
return false;
}
var url="whois.php?"+"domain="+domain+"&ext="+ext
accjax(url, divwait, divcontent)
}

eAmin
یک شنبه 23 تیر 1387, 11:39 صبح
سلام.

دیدید گفتم، مشکل از همونه!!!!

با این کد باید کارت راه بیافته:

function accjax(url, divwait, divcontent)
{
document.getElementById(divwait).style.display = "";
var xmlHttp = GetXmlHttpObject();
if (xmlHttp==null) {
alert ("Your Web Browser does not Support Ajax Technology!");
return;
}

xmlHttp.onreadystatechange=stateChanged(divwait, divcontent, xmlHttp);
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}

function stateChanged(divwait, divcontent, XHR)
{
var XHR;
if (XHR.readyState==4 || XHR.readyState=="complete") {
document.getElementById(divcontent).innerHTML=XHR. responseText;
document.getElementById(divwait).style.display = "none";
}
}

function whois(domain, ext, divwait, divcontent)
{
if (str == "") {
return false;
}
var url="whois.php?"+"domain="+domain+"&ext="+ext;
accjax(url, divwait, divcontent);
}

و قتی یک شئی XHR رو تعریف می کنید، باید تمام متدها و توابعش درون یک تابع قرار بگیره در غیر اینصورت به مشکل برمی خورید!

البته راه حلش رو توی کد بالایی گذاشتم.

در ضمن، ; رو خیلی جا گذاشتی...

Bahram0110
یک شنبه 23 تیر 1387, 12:10 عصر
سلام
ممنون از لطفتون :)

خطا به قوت خودش باقیه :(
از این خط اشکال می گیره

document.getElementById(divcontent).innerHTML=XHR. responseText;
type mismatch

org.kiani
یک شنبه 23 تیر 1387, 13:14 عصر
در تابع stateChanged باید var XHR رو بردارید ببینید مشکل حل میشه!

Bahram0110
یک شنبه 23 تیر 1387, 13:29 عصر
در تابع stateChanged باید var XHR رو بردارید ببینید مشکل حل میشه!
سلام
برداشتم
Error on page
کار نمی کنه

org.kiani
یک شنبه 23 تیر 1387, 14:17 عصر
دوست عزیز از این کد استفاده کنید ببینید چی میشه:


var xmlHttp = null;
function accjax(url, divwait, divcontent)
{
document.getElementById(divwait).style.display = "";

try {
xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
} catch( e1 ) {
try {
xmlHttp = new XMLHttpRequest();
} catch( e2 ) {
alert ("Your Web Browser does not Support Ajax Technology!");
return false;
}
}

xmlHttp.open("GET",url,true);
xmlHttp.onreadystatechange=function() {
if(xmlHttp.readyState == 4) {
document.getElementById(divcontent).innerHTML=xmlH ttp.responseText;
document.getElementById(divwait).style.display = "none";
}
}
xmlHttp.send(null)
}

function whois(domain, ext, divwait, divcontent)
{
if (domain == ""){
return false;
}
var url="whois.php?"+"domain="+domain+"&ext="+ext
accjax(url, divwait, divcontent)
}

Bahram0110
یک شنبه 23 تیر 1387, 15:41 عصر
ممنون حل شد
با تشکر از همهء دوستان بخصوص musiox (http://barnamenevis.org/forum/member.php?u=37286) عزیز