Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.05.2013, 14:51
Интересующийся
Отправить личное сообщение для Masterli Посмотреть профиль Найти все сообщения от Masterli
 
Регистрация: 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 строк отображаются, только кнопки не работают.
Если отобразить без цикла, всё работает, но без цикла не обойтись, я же не знаю сколько будет строк.
Спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 06.05.2013, 14:59
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

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

смотрите в фаербаге на ошибки.
Ответить с цитированием
  #3 (permalink)  
Старый 06.05.2013, 16:30
Интересующийся
Отправить личное сообщение для Masterli Посмотреть профиль Найти все сообщения от Masterli
 
Регистрация: 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+'"
Ответить с цитированием
  #4 (permalink)  
Старый 06.05.2013, 16:32
Интересующийся
Отправить личное сообщение для Masterli Посмотреть профиль Найти все сообщения от Masterli
 
Регистрация: 19.04.2013
Сообщений: 15

В фаербаге ошибок нет
Ответить с цитированием
  #5 (permalink)  
Старый 06.05.2013, 16:44
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

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

а вот саму функцию не описали.. я бы на нее взглянул бы
function serv_knopka_vibor(param)
   {
   //попробуйте перед началом работы функции которую вы вызывайте поставить консоль и проследить действительно ли не вызывается эта функция?
   console.log(1);
   //кликните и посмотрите в фаербаге есть ли единичка или нет
   }
Ответить с цитированием
  #6 (permalink)  
Старый 06.05.2013, 16:47
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

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

// Преобразования JSON ответа
var json01 = eval("(" + data + ")");
//теперь можно использовать объект json01 c параметрами массива
console.log(json01);
// Определяется количество строк, далее цикл, выполнить действия столько раз сколько строк
Ответить с цитированием
  #7 (permalink)  
Старый 06.05.2013, 16:47
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

и да.. какой браузер??
Ответить с цитированием
  #8 (permalink)  
Старый 06.05.2013, 16:55
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

еще есть предположение там у вас много relative, absolute.. там нигде не перехлестываются div'ы??
т.е. сначала идет инпут а поверх прозрачным слоем див?
Ответить с цитированием
  #9 (permalink)  
Старый 06.05.2013, 17:08
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

попробуйте просто поднести курсор над кнопку и убрать, он должен немного измениться в цвете (по крайней мере в хроме точно) если этого нет, значит вашу кнопку кто то перекрыл..
Ответить с цитированием
  #10 (permalink)  
Старый 07.05.2013, 08:40
Интересующийся
Отправить личное сообщение для Masterli Посмотреть профиль Найти все сообщения от Masterli
 
Регистрация: 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 последних, все перед этим не работают.

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появляющаяся/исчезающая кнопка при прокрутке страницы MailRes Элементы интерфейса 2 22.06.2011 11:49
Кнопка не нажимается EventPromo Элементы интерфейса 3 26.04.2011 11:38
Не работает кнопка отправки после загрузки Igor Shmigoff jQuery 2 29.12.2010 21:51
Кнопка onclick=javascript:location в новом окне Nikola Общие вопросы Javascript 7 13.11.2010 11:16
Не работает кнопка "Назад" savagden Javascript под браузер 3 10.12.2009 20:25