jQuery nicescroll не работает с динамическим содержимым и другими функциями JavaScript, создающими случайный эффект

Так вот, у меня есть боковая панель, которая имеет большую высоту из-за большого количества навигационных ссылок. И я использую плагин jQuery nicescroll, чтобы он выглядел нормально. На боковой панели у меня также есть тег h3, который случайным образом показывает буквы (см. код) каждые 4 секунды. Так вот, когда он включен - прокрутка вообще не работает эти 4 секунды и никакую прокрутку сделать нельзя. Я пытался использовать $("#sidebar").getNiceScroll().resize(), но это тоже не работает. Есть ли способ заставить его работать?

<div id="sidebar">
<h3 id="output">Random</h3>
</div>

//Calling for nicescroll function for my sidebar
$(function(){
    $("#sidebar").niceScroll({ cursorcolor:"#66aee9", cursorfixedheight: 400 });
})


//Random effect for my h3 tag
setInterval(function(){
  $(document).ready(function(){
  var theLetters = "abcdefghijklmnopqrstuvwxyz#%&^+=-"; //You can customize what letters it will cycle through
  var ctnt = "Random"; // Your text goes here
  var speed = 50; // ms per frame
  var increment = 8; // frames per step. Must be >2
  var clen = ctnt.length;
  var si = 0;
  var stri = 0;
  var block = "";
  var fixed = "";
  //Call self x times, whole function wrapped in setTimeout
  (function rustle (i) {
  setTimeout(function () {
    if (--i){rustle(i);}
    nextFrame(i);
    si = si + 1;
  }, speed);
  })(clen*increment+1);
  function nextFrame(pos){
    for (var i=0; i<clen-stri; i++) {
      //Random number
      var num = Math.floor(theLetters.length * Math.random());
      //Get random letter
      var letter = theLetters.charAt(num);
      block = block + letter;
    }
    if (si == (increment-1)){
      stri++;
    }
    if (si == increment){
    // Add a letter;
    // every speed*10 ms
    fixed = fixed +  ctnt.charAt(stri - 1);
    si = 0;
    }
    $("#output").html(fixed + block);
    block = "";
  }
  });
}, 4000);

person Johnny Catsville    schedule 05.06.2017    source источник
comment
Я думаю, что уже слишком поздно, но мне любопытно, что эта проблема может быть решена в последней версии 3.7.5. Можете ли вы протестировать или опубликовать jsfiddle, чтобы я мог взглянуть?   -  person InuYaksa    schedule 17.07.2017
comment
Привет! Да, я загрузил последнюю версию несколько недель назад, и теперь она работает отлично, и эта проблема исчезла! :)   -  person Johnny Catsville    schedule 17.07.2017
comment
Большое спасибо за вашу работу! :)   -  person Johnny Catsville    schedule 17.07.2017


Ответы (1)


Я переключаюсь на строки и проверяю их в jsfiddle, похоже, прокрутка работает нормально.

До:

setInterval(function(){
  $(document).ready(function(){
...
  });
}, 4000);

После:

$(document).ready(function(){
  setInterval(function(){
...
  }, 4000);
});
person Vladimir    schedule 10.06.2017
comment
Нет... Это была хорошая попытка, но, к сожалению, она немного сложнее, чем кажется, как я заметил в эти дни, все дело в <div id="ascrail2000"> nicescroll, который меняет свою ширину и непрозрачность каждый раз, когда случайная функция включена или выключена.. Я до сих пор не понял, но буду работать над этим. Большое спасибо, если у вас будут другие советы или предложения, я буду рад их проверить! - person Johnny Catsville; 10.06.2017