Почему не работает setInterval даже на самом простом примере?
setInterval('alert("1")',4000)

// или

setInterval(function() {
    alert("1");
},4000)
setInterval(alert("1"),4000);
Первым параметром надо передавать функцию, которая будет выполняться (или ее код).
Например, // так - не лучший вариант

setInterval('alert("1")',4000)

// Либо так 

var func = function() {
  return alert("1");
}
setInterval(func,4000);

// Либо так 

setInterval(function() {
  return alert("1");
}, 4000);

// Либо вообще так (es6) 

setInterval(() => alert("1"), 4000);
Вы же передаёте результат выполнения функции alert(), а имменно - всегда undefined. При том выполнение кода блокируется до тех пор, когда alert не был принят.