Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   div.innerHTML почему не работает в верху (https://javascript.ru/forum/events/83532-div-innerhtml-pochemu-ne-rabotaet-v-verkhu.html)

leon2009sp 04.01.2022 02:32

div.innerHTML почему не работает в верху
 
Здравствуйте! почему код так работает:
<div id="div">777</div>
<script>
div.innerHTML = '<p>0000000</p>';
</script>
:write:
а:help: :blink:
так не работает, 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>
может кто подсказать? Спасибо!

Aetae 04.01.2022 03:30

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

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


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

leon2009sp 04.01.2022 09:24

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>

а этот валидатор ругаеться :cray: :-E :-E :-E
поэтому пришлось так::write:
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 вывожу на страничку:victory:
Но: я понимаю что это криво :-E , то скрипт в низу т.к. вверху не работает.
а в теории то должно быть так:
<html><head><script src="js/week.js"></script></head>
<body>
<div id="div">777</div>
</body>
</html>

Но так ни фига не работает :-E :nono: Где справедливость?

leon2009sp 04.01.2022 10:12

прокатило работает
 
РАБОТАЕТ: :thanks:
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("пн")
тоже также? :help:
ну тока:
window.addEventListener('DOMContentLoaded', function('super1'){
function('super1'):thanks:

рони 04.01.2022 10:24

Цитата:

Сообщение от 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;
          }
        );

ksa 04.01.2022 10:31

Цитата:

Сообщение от leon2009sp
Где справедливость?

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

Ты еще пожалуйся что у машин несколько скоростей вперед и только одна назад. Где же СПРАВЕДЛИВОСТЬ? :-E

ksa 04.01.2022 10:38

Цитата:

Сообщение от leon2009sp (Сообщение 542726)
поэтому пришлось так::write:
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>';

Завязывай с индусским кодом. :D
<!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>

leon2009sp 05.01.2022 10:57

дак суперкод-> чтобы понятно было :-?
Спасибо! :dance:

leon2009sp 05.01.2022 13:17

вопрос - как отоброжать содержимое фалов
 
а можно еще вопрос? :help:
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;
});

в общем вот :blink: не работает

leon2009sp 05.01.2022 13:37

проверте на ошибки
 
в общем у меня стоит нотепад :blink:
как тока я сюда код закидываю вижу что можно подправить, а вноте пад как сляпой КРОТ:-?
вот что вышло:
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;  
});

так правильно???

ksa 05.01.2022 14:05

Цитата:

Сообщение от leon2009sp (Сообщение 542765)
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';
//...

так правильно???

Хорош индусить. :nono:
const day = (new Date()).getDay();
let html = '<p>INFORMATION</p>';
if (day) html = day + '.dat';
alert(html)

leon2009sp 05.01.2022 19:47

может кому пригодиться
 
<script language="JavaScript">
                  nowDate=new Date();
                  theDay=nowDate.getDay();
                  text=new Array(30);
                  text[0]="7777777";
                  text[1]="11111111";
                  text[2]="2222222";
                  text[3]="3333333";
                  text[4]="4444444";
                  text[5]="555555555";
                  text[6]="66666666666";
                  document.write(text[theDay]);
                  </script>

может кому пригодиться document.write:victory:

ksa 05.01.2022 20:46

Цитата:

Сообщение от leon2009sp
text=new Array(30)

30 дней недели? :blink:

leon2009sp 06.01.2022 09:48

на хостинге не работает
 
на денвере работает :dance:
а на хостинг закачиваю и приехали :-?
window.addEventListener('DOMContentLoaded', function()
          {
 const day = (new Date()).getDay();
            let html = '<p>0000000</p>';
			if (day) html = day + '.dat';            
			if (!day || day == 4) info = html;		  
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();
}
get_file(info, function(response) 
{
document.getElementById("output").innerHTML=response
})		  
 }		  
);

это я пробовал и так и так ее :-E а она ни в какую
просто вывод текста то работает, а из файлов тока на локалке

leon2009sp 06.01.2022 09:54

ага понял почему: 1.txt читает, а вот если расширение *.dat = то на сервере прочитать не может.

leon2009sp 08.01.2022 21:22

ам, не работает воскресенье
 
window.addEventListener('DOMContentLoaded', function()
          {
            const day = (new Date()).getDay();
            let html = '<p>INFORMATION</p>';
			if (day) html = day +'.txt';			
			readTextFile(html);
          }
        );

не работает когда воскресенье

leon2009sp 08.01.2022 21:58

не фуричит с воскресеньем
 
function readTextFile(file)
{
    var rawFile = new XMLHttpRequest();
    rawFile.open("GET", file, false);
    rawFile.onreadystatechange = function ()
    {
        if(rawFile.readyState === 4)
        {
            if(rawFile.status === 200 || rawFile.status == 0)
            {
                var allText = rawFile.responseText;
				document.getElementById("output").innerHTML=allText;
                
            }
        }
    }
    rawFile.send(null);
}
window.addEventListener('DOMContentLoaded', function()
          {
            const day = (new Date()).getDay();
            let html = '<p>INFORMATION</p>';
			if (day) html = readTextFile('admin/text/week/' + day + '.txt');
			readTextFile(html);
          }
        );

leon2009sp 08.01.2022 22:08

как правильно вписать скрипт? сюда?
window.addEventListener('DOMContentLoaded', function()
		{
}

этот скрипт:
ball.onmousedown = function(event)
{
let shiftX = event.clientX - ball.getBoundingClientRect().left;
let shiftY = event.clientY - ball.getBoundingClientRect().top;
ball.style.position = 'absolute';
ball.style.zIndex = 1000;
document.body.append(ball);
moveAt(event.pageX, event.pageY);
function moveAt(pageX, pageY) 
{
ball.style.left = pageX - shiftX + 'px';
ball.style.top = pageY - shiftY + 'px';
};
function onMouseMove(event)
{
 moveAt(event.pageX, event.pageY);
};
document.addEventListener('mousemove', onMouseMove);
ball.onmouseup = function()
{
document.removeEventListener('mousemove', onMouseMove);
ball.onmouseup = null;
};
};
ball.ondragstart = function()
{
return false;
};

если скрипт движения картинки установить наверх то картинка перестает двигаться.

leon2009sp 29.01.2022 15:46

т.е. я понимаю что нужно дождаться загрузки скрипта: но как я вставляю сюда
window.addEventListener('DOMContentLoaded', function()
скрипт все перестает работать. т.е. window.addEventListener -> дожидается когда загрузиться страница, но не когда я нажму на мышку.


Часовой пояс GMT +3, время: 04:53.