HTML5 тег 'time' неправильно устанавливает значение - PullRequest
2 голосов
/ 29 августа 2011

У меня есть следующий код:

<html>
<script>


setInterval("settime()", 1000);

function settime () {
  var dateTime = new Date();
  var hours = dateTime.getHours();
  var minutes = dateTime.getMinutes();
  var time = "";

  if (hours === 0) { 
    hours = 12;
  }

  time = (hours > 12 ? hours - 12 : hours) + ":" +
         (minutes < 10 ? "0" : "") + minutes + (hours > 12 ? "PM" : "AM");

  // Doesn't work at all...
  document.getElementsByTagName('time').textContent = time;
  document.getElementsByTagName('time').innerHTML = time;


  console.log('Time set with js: ' + document.getElementsByTagName('time').textContent);

  // Works fine...
    //$('time').text(time);
}
</script>

<body>

    <time></time>

</body>
</html>

Почему обычный JS не работает вообще, а jQuery text() работает просто отлично?

Fiddle

Ответы [ 4 ]

3 голосов
/ 29 августа 2011

Поскольку document.getElementsByTagName возвращает nodeList, а не один элемент, вы должны указать, какой именно.Списки узлов работают как массивы, поэтому:

document.getElementsByTagName('time')[0].innerHTML = time;

работает.

http://jsfiddle.net/4EqxW/3/

1 голос
/ 29 августа 2011

Марек Себера и «Амосривера» ответили на первую часть вашего вопроса (основная часть)

А потом ответить на вторую часть вашего вопроса ...

Метод "text ()" jQuery будет выполнять желаемый результат для ALL элементов, которые соответствуют вашему исходному селектору (иначе ... каждому элементу "time" на странице).

1 голос
/ 29 августа 2011

Обратите внимание, что document.getElementsByTagName('time')[0]. part

http://jsfiddle.net/4EqxW/4/

getElementsbyTagName возвращает массив узлов (NodeList), поэтому вам нужно указать, к какому элементу вы обращаетесь к свойствам

0 голосов
/ 29 августа 2011

Попробуйте

document.getElementsByTagName('time')[0].textContent = time;
document.getElementsByTagName('time')[0].innerHTML = time;

Обратите внимание, что getElementsByTagName возвращает NodeList, который является массивом, а не отдельным элементом. Результаты изменения кода.

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