@Dilun

Как исправить непонятное поведение javascript?

Есть код, где переключение между ссылками очищает результирующий div. Но только пытаюсь сделать ссылку постраничности, то очистка происходит, но окно закрывается. Голову уже сломал куда копать - ведь ситуации идентичны, даже вызовы методов пробовал реализовать один в один, все равно окно исчезает. Окно - это всплывающийся div. Это код с ссылками

clear_div = true;

var str = "<div>";

    if (num_notify > count_items) {
        str += "<div class='ta-left' style='float: left'><a href='javascript:void(0)' onclick='site_news_show(\"".concat(type_notify, "\", ",  num_notify - count_items - num_notify%count_items, "\", ", clear_div) + ")'>Назад</a></div>";
    }
    if (num_notify < count_notify[type_notify]) {
        str += "<div class='ta-right'style='float: right'><a href='javascript:void(0)' onclick='site_news_show(\"".concat(type_notify, "\", ", num_notify, "\", ", clear_div) + ")'>Дальше</a></div>";
    }

    str += "<div style='clear:both'>";
    str += "</div>";
    box_result.append(str);
  • Вопрос задан
  • 116 просмотров
Пригласить эксперта
Ответы на вопрос 2
groog
@groog
Я только учусь
Вообще, если честно, то на ваш код больно смотреть. Он некрасивый, непонятный и его сложно отладить.
Я только учусь, но, мне кажется, следует писать так:

var boxResult = document.getElementById("elementID");
var wrapperBlock = document.createElement("div");
var notifyBlock = document.createElement("div");
var linkBlock = document.createElement("a");

switch(true){

  case (num_notify > count_items):
  
    notifyBlock.classList.add("ta-left");
    notifyBlock.setAttribute("style", "float: left");
    
    linkBlock.setAttribute("href", "javascript:void(0)");
    linkBlock.onclick(function(){
    	// если у вас нет единой функции-обработчика
    });
    linkBlock.innerText = "Назад";
    
    notifyBlock.appendChild(linkBlock);
    
  break;
  
  case(num_notify < count_notify[type_notify]):

    notifyBlock.classList.add("ta-right");
    notifyBlock.setAttribute("style", "float: right");
    
    linkBlock.setAttribute("href", "javascript:void(0)");
    linkBlock.onclick(function(){
    	// если у вас всё ещё нет единой функции-обработчика
    });
    linkBlock.innerText = "Дальше";
    
    notifyBlock.appendChild(linkBlock);

  break;
  	
  default:

    notifyBlock.setAttribute("style", "clear:both");
}

wrapperBlock.appendChild(notifyBlock);

boxResult.appendChild(wrapperBlock);


Конечно, знающие товарищи скажут, что и я пишу так себе, но мой код можно читать, не утонув в ковычках.
И не используйте инлайн стили. У вас там классы для этого прописаны.
Ответ написан
Комментировать
@Dilun Автор вопроса
Нашел причину, у меня в методе при необходимости идет запрос на сервер, в это время и возникает проблема, отправил выполнение метода через другой с задержкой в 1 миллисекунду. Заработало. НО ПО МНЕ ЭТО ОГРОМЕННЫЙ КОСТЫЛЬ. Буду структуру кода менять. Всем спасибо!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы