Не нажимается кнопка
Всем добрый день.
Вопрос про цикл, который формирует кнопки. 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 строк отображаются, только кнопки не работают. Если отобразить без цикла, всё работает, но без цикла не обойтись, я же не знаю сколько будет строк. Спасибо |
что за server ??
полный код большой?? если нет, кидайте все. смотрите в фаербаге на ошибки. |
Весь код конечно большой
// 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+'" |
В фаербаге ошибок нет
|
привязка стоит onclick="serv_knopka_vibor('+server+')".. имхо, значит НЕ вываться не может..
а вот саму функцию не описали.. я бы на нее взглянул бы function serv_knopka_vibor(param) { //попробуйте перед началом работы функции которую вы вызывайте поставить консоль и проследить действительно ли не вызывается эта функция? console.log(1); //кликните и посмотрите в фаербаге есть ли единичка или нет } |
также не известно что хранится в json01
также можно вывести в консоль (или глянуть в фаербаге на ответ), если данные генерит сервер: // Преобразования JSON ответа var json01 = eval("(" + data + ")"); //теперь можно использовать объект json01 c параметрами массива console.log(json01); // Определяется количество строк, далее цикл, выполнить действия столько раз сколько строк |
и да.. какой браузер??
|
еще есть предположение там у вас много relative, absolute.. там нигде не перехлестываются div'ы??
т.е. сначала идет инпут а поверх прозрачным слоем див? |
попробуйте просто поднести курсор над кнопку и убрать, он должен немного измениться в цвете (по крайней мере в хроме точно) если этого нет, значит вашу кнопку кто то перекрыл..
|
Да, я так же думаю.
Перехлёстываются дивы, только ощущение, что перехлёстывается див, этим же дивом, когда добавляется новая строка (новый див) циклом 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. |