Установка CSS внутри setTimeout не обновляется - PullRequest
0 голосов
/ 19 марта 2020

Это глупый вопрос, однако, я пытался выяснить проблему этого некоторое время, и ничего не происходит. Я осмотрелся и проверил журналы, проверил консоль.

У меня есть функция, которая должна редактировать css элемента, переданного в параметре. Первые наборы работают, однако, внутри функции тайм-аута, похоже, не учитываются.

function notif(elem) {
  elem.style.color = "rgb(200,100,100)";
  elem.style.borderBottom = "1px solid rgb(200,100,100)";
  setTimeout(function() {
    elem.style.color = "rgb(200,200,200)";
    elem.style.borderBottom = "1px solid rgb(200,200,200)";
    console.log(elem.style.color, elem.style.borderBottom);
  }, 3 * 1000);
}
notif(document.getElementById('newTodo'));
.input {
  position: relative;
  background: none;
  border: none;
  color: white;
}

.input::placeholder {
  color: rgb(200, 200, 200);
}

.input:focus {
  outline: 0;
  border-bottom: 1px solid rgb(200, 200, 200);
  caret-color: white;
}

#newTodo {
  left: 20;
  top: 10;
}
<input class="input" id="newTodo" placeholder="Add new to-do task...">

Передаваемый элемент действителен и не имеет тегов !important. Я загрузил этот скрипт после css и html. Я вошел в тайм-аут, и я получаю его в консоли. Даже при регистрации elem.style это показывает, что целевые стили изменились, но они не отображаются на моей вкладке html.

Если я сделал что-то не так или есть решение, пожалуйста, дайте мне знать. Спасибо!


РЕДАКТИРОВАТЬ

Фрагмент дает желаемый результат, однако на моей веб-странице этот результат не создается. Есть ли какие-либо значения, которые могли бы помешать этому, что я могу иметь?


решено

Выяснилось, что причина была в том, что элемент был позже изменен в другом файл, о котором я забыл. Я только что переместил файл для загрузки предыдущей этой функцией, и он работал нормально.

Еще раз спасибо

1 Ответ

1 голос
/ 19 марта 2020

Убедитесь, что тег сценария находится внизу страницы.

https://faqs.skillcrush.com/article/176-where-should-js-script-tags-be-linked-in-html-documents

Я бы также использовал переменную в вашем javaScript

<script>
  const item = document.getElementById('newTodo')
  function notif(elem) {
    //...
  }
  notif(item);
</script>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...