06.05.2013, 14:51
|
Интересующийся
|
|
Регистрация: 19.04.2013
Сообщений: 15
|
|
Не нажимается кнопка
Всем добрый день.
Вопрос про цикл, который формирует кнопки.
a = 0;
while (a < kolvo_strok) {
stroka = "serv_stroka_"+a;
document.getElementById(''+stroka+'').innerHTML = '<div id="serv_stroka_a_'+a+'" style="position:relative; top: 80; left: 150; visibility: visible; z-index:3;"> \
... ... ...
<input type=image src="serv_knopka_vibor.bmp" onclick="serv_knopka_vibor('+server+')"></div> \
</div>';
a++;
};
Сколько строк, столько и информации + кнопок выбора.
Станно то, что последние 4 кнопки работают, а перед этим сколько угодно кнопок не работают.
т.е. больше 4 строк отображаются, только кнопки не работают.
Если отобразить без цикла, всё работает, но без цикла не обойтись, я же не знаю сколько будет строк.
Спасибо
|
|
06.05.2013, 14:59
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
что за server ??
полный код большой?? если нет, кидайте все.
смотрите в фаербаге на ошибки.
|
|
06.05.2013, 16:30
|
Интересующийся
|
|
Регистрация: 19.04.2013
Сообщений: 15
|
|
Весь код конечно большой
// server - это назнавние сервера, значение не имеет даже если ничего не передавать в функцию serv_knopka_vibor( )
function vhod_server () {
test = "vhod_server";
$.post("server.php", { test: test},
function(data){
//regotvet = "" + data;
//document.getElementById('obshee_info').innerHTML = regotvet;
// Преобразования JSON ответа
var json01 = eval("(" + data + ")");
//теперь можно использовать объект json01 c параметрами массива
// Определяется количество строк, далее цикл, выполнить действия столько раз сколько строк
// добавить информацию (сформироваться слой отсюда и формировать до тех пор пока не кончатся строки)
// пока можно использовать кастыли, но это не лучший вариант.
kolvo_strok = json01.kolvo_strok;
a = 0;
while (a < kolvo_strok) {
id = json01["id"+a];
igra = json01["igra"+a];
sait = json01["sait"+a];
server = json01["server"+a];
storona = json01["storona"+a];
kolzaiavok = json01["kolzaiavok"+a];
statusservera = json01["statusservera"+a];
dataservera = json01["dataservera"+a];
onlineservera = json01["onlineservera"+a];
stroka = "serv_stroka_"+a;
document.getElementById(''+stroka+'').innerHTML = '<div id="serv_stroka_a_'+a+'" style="position:relative; top: 70; left: 150; visibility: visible; z-index:3;"> \
<div id="serv_igra" style="position:relative; top: 0; left: 0;">'+igra+'</div> \
<div id="serv_sait" style="position:absolute; top: 0; left: 90;">'+sait+'</div> \
<div id="serv_server" style="position:absolute; top: 0; left: 180;">'+server+'</div> \
<div id="serv_storona" style="position:absolute; top: 0; left: 270;">'+storona+'</div> \
<div id="serv_kolvo" style="position:absolute; top: 0; left: 360;">'+kolzaiavok+'</div> \
<div id="serv_data" style="position:absolute; top: 0; left: 450;">'+dataservera+'</div> \
<div id="serv_online" style="position:absolute; top: 0; left: 540;">'+onlineservera+'</div> \
<div id="serv_status" style="position:absolute; top: 0; left: 630;">'+statusservera+'</div> \
<div id="serv_knopka_vibor_'+a+'"style="position:absolu te; top: 0; left: 700; visibility: visible; z-index:2;"> \
<input type=image src="serv_knopka_vibor.bmp" onclick="serv_knopka_vibor('+server+')"></div> \
</div>';
a++;
};
});
}
// Так выглядит индекс
<div id="serv_stroka_0" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_1" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_2" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_3" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_4" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_5" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_6" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
<div id="serv_stroka_7" style="position:relative; top: 0; left: 0; visibility: visible; z-index:3;"></div>
// Для примера, такие слои создаются автоматом по надобнасти.
// Проблема скорее всего тут, цикл переберает слои и забывает более старые данные
id="serv_stroka_a_'+a+'"
|
|
06.05.2013, 16:32
|
Интересующийся
|
|
Регистрация: 19.04.2013
Сообщений: 15
|
|
В фаербаге ошибок нет
|
|
06.05.2013, 16:44
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
привязка стоит onclick="serv_knopka_vibor('+server+')".. имхо, значит НЕ вываться не может..
а вот саму функцию не описали.. я бы на нее взглянул бы
function serv_knopka_vibor(param)
{
//попробуйте перед началом работы функции которую вы вызывайте поставить консоль и проследить действительно ли не вызывается эта функция?
console.log(1);
//кликните и посмотрите в фаербаге есть ли единичка или нет
}
|
|
06.05.2013, 16:47
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
также не известно что хранится в json01
также можно вывести в консоль (или глянуть в фаербаге на ответ), если данные генерит сервер:
// Преобразования JSON ответа
var json01 = eval("(" + data + ")");
//теперь можно использовать объект json01 c параметрами массива
console.log(json01);
// Определяется количество строк, далее цикл, выполнить действия столько раз сколько строк
|
|
06.05.2013, 16:47
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
и да.. какой браузер??
|
|
06.05.2013, 16:55
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
еще есть предположение там у вас много relative, absolute.. там нигде не перехлестываются div'ы??
т.е. сначала идет инпут а поверх прозрачным слоем див?
|
|
06.05.2013, 17:08
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
попробуйте просто поднести курсор над кнопку и убрать, он должен немного измениться в цвете (по крайней мере в хроме точно) если этого нет, значит вашу кнопку кто то перекрыл..
|
|
07.05.2013, 08:40
|
Интересующийся
|
|
Регистрация: 19.04.2013
Сообщений: 15
|
|
Да, я так же думаю.
Перехлёстываются дивы, только ощущение, что перехлёстывается див, этим же дивом, когда добавляется новая строка (новый див) циклом
document.getElementById(''+stroka+'').innerHTML = '<div id="serv_stroka_a_'+a+'" style="position:relative; top: 70; left: 150; visibility: visible; z-index:3;"> \
<div id="serv_igra" style="position:relative; top: 0; left: 0;">'+igra+'</div> \
<div id="serv_sait" style="position:absolute; top: 0; left: 90;">'+sait+'</div> \
<div id="serv_server" style="position:absolute; top: 0; left: 180;">'+server+'</div> \
<div id="serv_storona" style="position:absolute; top: 0; left: 270;">'+storona+'</div> \
<div id="serv_kolvo" style="position:absolute; top: 0; left: 360;">'+kolzaiavok+'</div> \
<div id="serv_data" style="position:absolute; top: 0; left: 450;">'+dataservera+'</div> \
<div id="serv_online" style="position:absolute; top: 0; left: 540;">'+onlineservera+'</div> \
<div id="serv_status" style="position:absolute; top: 0; left: 630;">'+statusservera+'</div> \
<div id="serv_knopka_vibor_'+a+'"style="position:absol u te; top: 0; left: 700; visibility: visible; z-index:2;"> \
<input type=image src="serv_knopka_vibor.bmp" onclick="serv_knopka_vibor('+server+')"></div> \
</div>';
Вот этот див сам себя захлёстывает.
Пробывал их делать на любом расстоянии, всё равно работают только 4 последних, все перед этим не работают.
Как ещё можно реализовать добавление новых строк, может вся логика неправильная.
(Браузер Опера)
Спасибо за ответы.
|
|
|
|