Показать сообщение отдельно
  #7 (permalink)  
Старый 17.02.2018, 00:20
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

Проблема была в том, что функцию вы вызываете до того, как на странице появляются элементы. Если бы вы внимательно читали информационную справку о потоке - могли бы сами понять) :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
</head>
 
<body>
 
<script language="JavaScript" type="text/javascript">
 
function updateInfo(file, target, interval){
  if(typeof target !== 'object')
    target = document.querySelector(target);
   
  function stop(){
    clearTimeout(timer);
    xmlhttp.abort();
  }
  function update(){
    xmlhttp.open('GET', file + '?' + Math.random(), true); // защита от кеширования, тут понятно
    xmlhttp.send();
  }
   
  var xmlhttp = new XMLHttpRequest(), timer;
  xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState !== 4)
      return;
     
    if(xmlhttp.status !== 200)
      console.log('updateInfo: ' + xmlhttp.statusText);
    else
      target.innerHTML = xmlhttp.responseText;
     
    timer = setTimeout(update, interval);  
  }
   
  update();
   
  return {
    start: update,
    stop: stop
  }
};
 
//тут ещё нет никакого table, оно ещё летит по сети, а код уже работает. Естесно нифига не найдено.
updateInfo('./temperatura.txt', 'table td:nth-child(2)', 1000); //запрос по (css) селектору: первая таблица, второй по порядку td, тут предполагалось, что вы сами укажете что надо)
 
</script>
 
<table width="246" border="1">
  <tr>
    <td width="105">parametr1</td>
    <td width="125">&nbsp;</td>
  </tr>
  <tr>
    <td>parametr1</td>
    <td>&nbsp;</td>
  </tr>
</table>
 
 
</body>
</html>

Должно быть примерно так:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script>
function updateInfo(file, target, interval){
  //тут проверяется что target - объект, если да то считаем, что это сам элемент куда надо выводить и оставляем как есть, иначе считаем что передан (css) селектор и запрашиваем элемент по оному
  if(typeof target !== 'object') 
    target = document.querySelector(target);
   
  function stop(){
    clearTimeout(timer);
    xmlhttp.abort();
  }
  function update(){
    xmlhttp.open('GET', file + '?' + Math.random(), true); 
    xmlhttp.send();
  }
   
  var xmlhttp = new XMLHttpRequest(), timer;
  xmlhttp.onreadystatechange = function(){
    if(xmlhttp.readyState !== 4)
      return;
     
    if(xmlhttp.status !== 200)
      console.log('updateInfo: ' + xmlhttp.statusText);
    else
      target.innerHTML = xmlhttp.responseText;
     
    timer = setTimeout(update, interval);  
  }
   
  update();
   
  return {
    start: update,
    stop: stop
  }
};

window.onload = function(){
  updateInfo('./temperatura.txt', '#textPlace2', 1000);
  //или
  updateInfo('./temperatura.txt', document.getElementById('textPlace2'), 1000);
}

</script>
</head>
 
<body>
 

<table width="246" border="1">
  <tr>
    <td width="105">parametr1</td>
    <td width="125">&nbsp;</td>
  </tr>
  <tr>
    <td>parametr1</td>
    <td >&nbsp;</td>
  </tr>
</table>

<!-- или просто добавить в конец, так:
<script>
updateInfo('./temperatura.txt', '#textPlace2', 1000);
</script>
-->
</body>
</html>

И да, js - регистрозависимый, потому ваш OnLoad не работает.)
__________________
29375, 35

Последний раз редактировалось Aetae, 17.02.2018 в 00:34.
Ответить с цитированием