Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не нажимается кнопка (https://javascript.ru/forum/misc/37767-ne-nazhimaetsya-knopka.html)

Masterli 06.05.2013 14:51

Не нажимается кнопка
 
Всем добрый день.
Вопрос про цикл, который формирует кнопки.

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 строк отображаются, только кнопки не работают.
Если отобразить без цикла, всё работает, но без цикла не обойтись, я же не знаю сколько будет строк.
Спасибо

skrudjmakdak 06.05.2013 14:59

что за server ??
полный код большой?? если нет, кидайте все.

смотрите в фаербаге на ошибки.

Masterli 06.05.2013 16:30

Весь код конечно большой


// 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+'"

Masterli 06.05.2013 16:32

В фаербаге ошибок нет

skrudjmakdak 06.05.2013 16:44

привязка стоит onclick="serv_knopka_vibor('+server+')".. имхо, значит НЕ вываться не может..

а вот саму функцию не описали.. я бы на нее взглянул бы
function serv_knopka_vibor(param)
   {
   //попробуйте перед началом работы функции которую вы вызывайте поставить консоль и проследить действительно ли не вызывается эта функция?
   console.log(1);
   //кликните и посмотрите в фаербаге есть ли единичка или нет
   }

skrudjmakdak 06.05.2013 16:47

также не известно что хранится в json01
также можно вывести в консоль (или глянуть в фаербаге на ответ), если данные генерит сервер:

// Преобразования JSON ответа
var json01 = eval("(" + data + ")");
//теперь можно использовать объект json01 c параметрами массива
console.log(json01);
// Определяется количество строк, далее цикл, выполнить действия столько раз сколько строк

skrudjmakdak 06.05.2013 16:47

и да.. какой браузер??

skrudjmakdak 06.05.2013 16:55

еще есть предположение там у вас много relative, absolute.. там нигде не перехлестываются div'ы??
т.е. сначала идет инпут а поверх прозрачным слоем див?

skrudjmakdak 06.05.2013 17:08

попробуйте просто поднести курсор над кнопку и убрать, он должен немного измениться в цвете (по крайней мере в хроме точно) если этого нет, значит вашу кнопку кто то перекрыл..

Masterli 07.05.2013 08:40

Да, я так же думаю.
Перехлёстываются дивы, только ощущение, что перехлёстывается див, этим же дивом, когда добавляется новая строка (новый див) циклом

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 последних, все перед этим не работают.

Как ещё можно реализовать добавление новых строк, может вся логика неправильная.
(Браузер Опера)
Спасибо за ответы.


Часовой пояс GMT +3, время: 06:34.