Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.01.2022, 02:32
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

div.innerHTML почему не работает в верху
Здравствуйте! почему код так работает:
<div id="div">777</div>
<script>
div.innerHTML = '<p>0000000</p>';
</script>

а
так не работает, 100 раз проверял
<script>
div.innerHTML = '<p>0000000</p>';
</script>
<div id="div">777</div>

2) как document.write("22222222") передать значение в DIV
может^
ddd.document.write("222222")
<div id=ddd></div>
может кто подсказать? Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 04.01.2022, 03:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Потому что html формат разработан для работы по сети и рисования сайта сразу по мере получения информации. Т.е. на медленном интернете во втором случае возможна ситуация, когда script - загрузился, а div ещё течёт по проводам. По этому разбор html документа всегда идёт строго по порядку: на момент запуска твоего script - твоего div не существует, и script, соответственно, ничего о нём не знает.

Либо всегда помещай script вниз, либо жди загрузки кода страницы:
window.addEventListener('DOMContentLoaded', function(){
  // твой код
});
либо загрузки всей страницы вместе с картинками, видео и прочим содержимым:
window.addEventListener('load', function(){
  // твой код
});


Про document.write забудь. По крайней мере пока не станешь senior.)
__________________
29375, 35

Последний раз редактировалось Aetae, 04.01.2022 в 03:32.
Ответить с цитированием
  #3 (permalink)  
Старый 04.01.2022, 09:24
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

JavaScript в супер стайтах
Да, я сделал так:
<SCRIPT language=JavaScript>
<!-- 
document.write("<font color=#ffffff size=-2>")
now = new Date()

if (now.getDay() == 0) document.write("пн")
if (now.getDay() == 1) document.write("вт")
if (now.getDay() == 2) document.write("ср")
if (now.getDay() == 3) document.write("чт")
if (now.getDay() == 4) document.write("пт")
//-->
</SCRIPT>

а этот валидатор ругаеться
поэтому пришлось так:
now = new Date()
if (now.getDay() == 0)
div.innerHTML = '<p>пн</p>';
if (now.getDay() == 1)
div.innerHTML = '<p>вт</p>';
if (now.getDay() == 2)
div.innerHTML = '<p>ср</p>';
if (now.getDay() == 3)
div.innerHTML = '<p>чт</p>';
if (now.getDay() == 4)
div.innerHTML = '<p>пт</p>';
if (now.getDay() == 5)
div.innerHTML = '<p>сб</p>';
if (now.getDay() == 6)
div.innerHTML = '<p>вс</p>';

и через DIV вывожу на страничку
Но: я понимаю что это криво , то скрипт в низу т.к. вверху не работает.
а в теории то должно быть так:
<html><head><script src="js/week.js"></script></head>
<body>
<div id="div">777</div>
</body>
</html>

Но так ни фига не работает Где справедливость?
Ответить с цитированием
  #4 (permalink)  
Старый 04.01.2022, 10:12
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

прокатило работает
РАБОТАЕТ:
window.addEventListener('DOMContentLoaded', function(){
 now = new Date()
if (now.getDay() == 0)
div.innerHTML = '<p>0000000</p>';
if (now.getDay() == 1)
div.innerHTML = '<p>11111111fff2</p>';
});

а с
document.write("пн")
тоже также?
ну тока:
window.addEventListener('DOMContentLoaded', function('super1'){
function('super1')
Ответить с цитированием
  #5 (permalink)  
Старый 04.01.2022, 10:24
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от leon2009sp
now.getDay()
если вычисление повторяется его лучше закешировать!

window.addEventListener('DOMContentLoaded', function()
          {
            const day = (new Date()).getDay();
            let html = '<p>0000000</p>';
            if (day == 1) html = '<p>11111111fff2</p>';
            if (!day || day == 1) div.innerHTML = html;
          }
        );
Ответить с цитированием
  #6 (permalink)  
Старый 04.01.2022, 10:31
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от leon2009sp
Где справедливость?
При чем тут твоя "справедливость"?
Тебе описали выше алгоритм обработки контента браузером. Так оно и работает.

Ты еще пожалуйся что у машин несколько скоростей вперед и только одна назад. Где же СПРАВЕДЛИВОСТЬ?
Ответить с цитированием
  #7 (permalink)  
Старый 04.01.2022, 10:38
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от leon2009sp Посмотреть сообщение
поэтому пришлось так:
now = new Date()
if (now.getDay() == 0)
div.innerHTML = '<p>пн</p>';
if (now.getDay() == 1)
div.innerHTML = '<p>вт</p>';
if (now.getDay() == 2)
div.innerHTML = '<p>ср</p>';
if (now.getDay() == 3)
div.innerHTML = '<p>чт</p>';
if (now.getDay() == 4)
div.innerHTML = '<p>пт</p>';
if (now.getDay() == 5)
div.innerHTML = '<p>сб</p>';
if (now.getDay() == 6)
div.innerHTML = '<p>вс</p>';
Завязывай с индусским кодом.
<!DOCTYPE html>
<html>
<head>
<!--
<script src='https://code.jquery.com/jquery-latest.min.js'></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
<script src='tmp.js'></script>
-->
<style>
</style>
<script>
window.addEventListener('DOMContentLoaded', _ => {
	const a = ['пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс']
	let val = now = new Date()
	val = val.getDay()
	div.innerHTML = '<p>' + a[val] + '</p>';
})
</script>
</head>
<body>
<p id='div'></p>
</body>
</html>
Ответить с цитированием
  #8 (permalink)  
Старый 05.01.2022, 10:57
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

дак суперкод-> чтобы понятно было
Спасибо!
Ответить с цитированием
  #9 (permalink)  
Старый 05.01.2022, 13:17
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

вопрос - как отоброжать содержимое фалов
а можно еще вопрос?
function get_file(url, callback)
{
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            callback(xmlhttp.responseText);
        }
    }
    xmlhttp.send();
}

window.addEventListener('DOMContentLoaded', function()
          {
            const day = (new Date()).getDay();
            let html = '<p>INFORMATION</p>';
            if (day == 1) html = '1.dat';
			if (day == 2) html = '2.dat';			
			if (day == 3) html = '3.dat'; 
			if (day == 4) html = '4.dat';
			if (day == 5) html = '5.dat';
			if (day == 6) html = '6.dat';
			if (day == 7) html = '7.dat';
            if (!day || day == 1) info.innerHTML = html;
			if (!day || day == 2) info.innerHTML = html;
			if (!day || day == 3) info.innerHTML = html; 
			if (!day || day == 4) info.innerHTML = html;
			if (!day || day == 5) info.innerHTML = html;
			if (!day || day == 6) info.innerHTML = html;
			if (!day || day == 7) info.innerHTML = html;
			
          }
		 
        );

get_file(html, function(response) 
{
    document.getElementById("output").innerHTML=response;
});

в общем вот не работает
Ответить с цитированием
  #10 (permalink)  
Старый 05.01.2022, 13:37
Аспирант
Отправить личное сообщение для leon2009sp Посмотреть профиль Найти все сообщения от leon2009sp
 
Регистрация: 22.12.2015
Сообщений: 97

проверте на ошибки
в общем у меня стоит нотепад
как тока я сюда код закидываю вижу что можно подправить, а вноте пад как сляпой КРОТ
вот что вышло:
function get_file(url, callback)
{
    xmlhttp=new XMLHttpRequest();
    xmlhttp.open("GET", url, true);
    xmlhttp.onreadystatechange = function()
    {
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            callback(xmlhttp.responseText);
        }
    }
    xmlhttp.send();
}

            const day = (new Date()).getDay();
            let html = '<p>INFORMATION</p>';
            if (day == 1) html = '1.dat';
			if (day == 2) html = '2.dat';			
			if (day == 3) html = '3.dat'; 
			if (day == 4) html = '4.dat';
			if (day == 5) html = '5.dat';
			if (day == 6) html = '6.dat';
			if (day == 7) html = '7.dat';
           
			

get_file(html, function(response)
 
{
 document.getElementById("output").innerHTML=response;  
});

так правильно???
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает делегирование? seotapki Events/DOM/Window 6 17.02.2019 09:46
Почему перебор элементов не работает по кругу Sinevik Общие вопросы Javascript 4 27.12.2017 01:41
Почему Jquery не работает в arcticmodal при вызове окна с большой высотой? sergey24 Общие вопросы Javascript 5 21.09.2017 15:49
Почему не работает? Rora Общие вопросы Javascript 7 10.05.2017 10:09
Почему это работает? (инклуд JS в JS) Василий Б. Общие вопросы Javascript 4 11.06.2010 12:41