@DromHour

Почему JS не видит второй аргумент?

Есть задача - если поле ввода "link" != источнику звука "player", исправить:
var dynUp = setInterval("if (document.getElementById('link').value != document.getElementById('player').getAttribute('src')) 
{
document.getElementById('player').setAttribute('src','document.getElementById(\'link\').value');
document.getElementById('loadicon').innerHTML = '<div class=\'cssload-whirlpool\'></div>';
while (document.getElementById('player').readyState == 0) {};
document.getElementById('loadicon').innerHTML = ''}", 100);


While используется как ожидание загрузки метаданных аудио.

7983987837f74b7e91b1508929ad5abd.jpeg

Однако, после первого аргумента setAttribute, JS решает, что второй аргумент нам не особо-то и нужен, а вот закрывающую скобку он игнорит, в следствие чего, дальше код не идёт.

Uncaught SyntaxError: missing ) after argument list
  • Вопрос задан
  • 128 просмотров
Пригласить эксперта
Ответы на вопрос 1
@miserenkov
Middle PHP Developer
var dynUp = setInterval(function () {
    if (document.getElementById('link').value != document.getElementById('player').getAttribute('src')) {
        document.getElementById('player').setAttribute('src', 'document.getElementById(\'link\').value');
        document.getElementById('loadicon').innerHTML = '<div class=\'cssload-whirlpool\'></div>';
        while (document.getElementById('player').readyState == 0) {
            
        }
        document.getElementById('loadicon').innerHTML = ''
    }
}, 100);

Если хотите передать код в строке то либо пишите все в одну строку, либо переносите следующим образом
var dynUp = setInterval("if (document.getElementById('link').value != document.getElementById('player').getAttribute('src'))" +
            "{" +
            "document.getElementById('player').setAttribute('src','document.getElementById(\'link\').value');" +
            "document.getElementById('loadicon').innerHTML = '<div class=\'cssload-whirlpool\'></div>';" +
            "while (document.getElementById('player').readyState == 0) {};" +
            "document.getElementById('loadicon').innerHTML = ''}", 100);

Но первый вариант, через функцию, читабельнее и правильнее.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы