OMG, мне нужен способ настроить массивы XML-запросов на основе idShout - 1.
Так было бы что-то вроде этого ...
var req = new Array();
req[idShout - 1] = ALL XML Data...
Вот что я получил до сих пор, но это совсем не работает: (
var idShout;
var req = new Array();
function htmlRequest(url, params, method)
{
req[req.push] = ajax_function();
for (i=0;i<req.length;i++)
{
(function (i) {
if (req[i])
{
if (method == "GET")
{
req[i].onreadystatechange = function()
{
if (req[i].readyState != 4)
return;
if (req[i].responseText !== null && req[i].status == 200)
{
document.getElementById("shoutbox_area" + idShout).innerHTML = req[i].responseText;
}
}
}
req[i].open(method,url,true);
if (method == "POST")
req[i].setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
if (params == "")
req[i].send(null);
else
req[i].send(params);
return req[i];
}
else
return null;
})(i);
}
}
function ajax_function()
{
var ajax_request = null;
try
{
// Opera 8.0+, Firefox, Safari
ajax_request = new XMLHttpRequest();
}
catch (e)
{
// IE Browsers
try
{
ajax_request = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
ajax_request = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
//No browser support, rare case
return null;
}
}
}
return ajax_request;
}
function send(which)
{
var send_data = "shoutmessage=" + document.getElementById("shout_message" + which).value;
var url = smf_prepareScriptUrl(smf_scripturl) + "action=dreamaction;sa=shoutbox;xml;send_shout="+ which;
htmlRequest(url, send_data, "POST");
document.getElementById("shout_message" + which).value = "";
document.getElementById("shout_message" + which).focus();
return true;
}
function startShouts(refreshRate, shoutCount)
{
clearInterval(Timer[shoutCount-1]);
idShout = shoutCount;
show_shouts();
Timer[shoutCount - 1] = setInterval("show_shouts()", refreshRate);
return;
}
function show_shouts()
{
var url = smf_prepareScriptUrl(smf_scripturl) + "action=dreamaction;sa=shoutbox;xml;get_shouts=" + idShout;
htmlRequest(url, "", "GET");
}
Любая помощь по этому вопросу будет принята с благодарностью ...
По сути, я устанавливаю массивы таймеров в другой функции до этого и вызываю startShouts, который должен показывать всю информацию, но startShouts вызывается более одного раза, поэтому для idShout установлено равное shoutCount. Так что это будет выглядеть примерно так: shoutCount = 1, shoutCount = 2, shoutCount = 3, каждый раз, когда он вызывается. Поэтому я установил массив req [idShout - 1], и он должен вернуть правильный результат ??
Ну, я не получаю ошибок в Firefox в консоли ошибок с этим кодом выше, но это не работает ... Любые идеи кто-нибудь ?? Поскольку это должно быть выведено в более чем 1 область ... argg.
Спасибо за любую помощь, которую вы можете предложить здесь:)
Спасибо, ребята:)
Кроме того, немного больше информации об этом ...
По сути, на каждой странице есть 1 или более Shoutboxes. для каждого элемента изменения увеличиваются на 1 для каждого чата, который находится на этой странице. Значения для Shoutbox могут быть разными, например, refreshRate может быть другим. 1 Shoutbox может иметь частоту обновления около 2000 миллисекунд, в то время как другая может иметь частоту 250 миллисекунд, они должны отличаться и обновляться в определенное для них время, поэтому я решил создать массив Timer , хотя и не уверен, что я настроил массив Timer так, как он должен быть настроен для функции setInterval. Вот как это делается в другой функции javascript, которая запускается непосредственно перед вызовом startShouts ...
Эта часть находится за пределами функции и внутри самого документа:
var Timer = new Array();
И эта часть находится в функции ...
Timer[shoutCount - 1] = "";
Так не уверен, правильно ли настроен таймер ...?