Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Предпологается наличие объекта (https://javascript.ru/forum/css-html/8889-predpologaetsya-nalichie-obekta.html)

Tera 19.04.2010 13:58

Предпологается наличие объекта
 
Только начал изучать ява скрипт
при нажатие на изображение ошибка "предпологает наличие объекта " подскажите где ошибка?
<html>
<head>
<script>


function Xmove(){

var xinetrval = setInterval ("moveImg()",20); 

i = 30;

			function moveImg() {
			alert ("sdaf");
				if (i<100){
					document.all.oneImg1.style.top=i;
					alert(i);
					i=i+5;
				}
			else
			clearInterval(xinetrval)
	
	}		}
	
			
			
			
</script>
</head>
<body>
<IMG ID=oneImg1 src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index=1"; onclick="Xmove()"; >


</body>
</html>

Gozar 19.04.2010 15:04

предполагаю что здесь:
document.all.oneImg1.style.top=i;

замените на:
document.getElementById('oneImg1').style.top=i;

Gozar 19.04.2010 15:06

и еще
<IMG ID=oneImg1 src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index=1"; onclick="Xmove()"; >

писать нельзя, вы ставите точку с запятой где их быть не должно и еще после z-index должно стоять двоеточие, а не равно и id лучше писать в двойных кавычках:
<IMG ID="oneImg1" src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove()">

Tera 19.04.2010 15:47

сделал все выше указаные изменения, ошибка осталасась прежней :(

Skipp 19.04.2010 17:16

<html>
<head>
<script type="text/javascript">
function Xmove()
{
	var i = 30;
	var xinetrval = setInterval(function(){ i<100 ? document.all.oneImg1.style.top=i=i+5 : clearInterval(xinetrval) },20); 
}		
		
</script>
</head>
<body>
<IMG id="oneImg1" src="D:/www/java/2.jpg" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove()">
</body>
</html>

Tera 19.04.2010 17:38

спасибо большое

Gozar 20.04.2010 10:23

Skipp,
используете сокращенную запись ?: и тут же пишите вот это:
document.all.oneImg1.style.top=i=i+5

Это говнокод.
Хотя это все равно останется говнокодом, но вы его делаете еще и сложным для понимания.

Skipp 20.04.2010 10:59

Gozar,
Объясните почему это говнокод, спорить не буду просто интересно! Может что нового узнаю.

А насчёт сложного, не спорю. Но если бы автор хотел понять, то попросил бы разжевать код.

Gozar 20.04.2010 11:10

1. document.all говнокод
2. = i = i + 5 говнокод
3. и вообще это все говнокод потому что:

http://javascript.ru/blog/Andrej-Par...meout-interval

Skipp 20.04.2010 11:20

Насчёт первого соглашусь, знаю ответ.

А вот остальное объясните пожалуйста, очень интересно, что там такого не так? Без шуток.

Gozar 20.04.2010 11:33

Skipp,
я уже объяснил, разжёвывать я не буду, скучно.

Skipp 20.04.2010 11:36

Gozar,
ну тогда насчёт 2 и 3 я останусь при своём мнении.
А вообще жаль, думал узнаю что-то полезное.


Может кто-нибудь другой тогда объяснит, пожалуйста.

Gozar 20.04.2010 11:40

Skipp,
Вы разучились читать?
Я дал вам ссылку вот и читайте. Там всё разжевано.

И идите учить операторы присваивания += например.

Skipp 20.04.2010 11:48

Gozar,
В данной ссылке, я не нашёл ничего полезного по данной теме.

А про операторы присваивания я знаю. Но не понял почему
i=i+5; - говнокод
i+=5; - а это нет

Разница в результате? Или из-за того что код сократился на 1 символ?

Gozar 20.04.2010 11:59

Skipp,
Вставьте перед тегом <html> строку:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
и заставьте ваш код работать снова.

Skipp 20.04.2010 12:28

Во, вот за это спасибо. ошибку понял.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function Xmove(i)
{
	var xinetrval = setInterval(function(){i<100 ? document.getElementById('oneImg1').style.top=(i+=5) + "px" : clearInterval(xinetrval) },20); 
}
</script>
</head>
<body>
<img id="oneImg1" src="http://javascript.ru/forum/image.php?u=11&dateline=1271099142" style="position:absolute; top:30px; left:20px; z-index:1" onclick="Xmove(30)" alt="">
</body>
</html>


Улучшил говнокод :)

Gozar 20.04.2010 12:55

Skipp,
Это тоже говнокод, измените на
onclick="Xmove(130)"

Skipp 20.04.2010 13:38

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function Xmove(elem, end)
{
	var xinetrval = setInterval(function(){elem.offsetTop<end ? elem.style.top=(elem.offsetTop + 5) + "px" : clearInterval(xinetrval) },20); 
}		
</script>
</head>
<img src="http://javascript.ru/forum/image.php?u=11&dateline=1271099142" style="position:absolute;" onclick="Xmove(this, 1000)">
</body>
</html>


апдейт комплите говнокоде =)
работает если position = absolute и если второй параметр >= 10.

Еще есть ошибки?:)


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