2013-06-27 2 views
-3

Я пытаюсь создать функцию javascript, которая посещает и центрирует изображение до 1000 пикселей. Для этого я беру ширину, вычитаю 1000, разделим на 2 и умножьте на -1. Затем я беру это значение и назначаю его в поле margin-left и margin-right. У меня он настроен на загрузку страницы. По какой-то причине он не выполняет мою первую строку кода. Взгляните ниже. (Отладочные оповещения используются для отладки)Функция Javascript останавливается после определенной строки

Javascript

function crop() 
{ 
alert("debug") 
width = document.getElementById(slide).width 
alert("debug") 
width = -1((width - 1000)/2) 
alert("debug") 
document.getElementById(slide).setAttribute("style","margin-left" + width + "px") 
alert("debug") 
document.getElementById(slide).setAttribute("style","margin-right" + width + "px") 
alert("debug") 
} 

Это элемент Я пытаюсь заставить его применить все это.

Элемент

<div id="mySlides" style="width:1000px; overflow:hidden;"> 
<img src="img/1.jpg" onclick="slideshow()" id="slide" /> 
</div> 

Как вы можете видеть, он отображает только первое предупреждение отладки, и больше ничего после этого не показывать. Может кто-нибудь объяснить, почему он игнорирует остальную часть кода?

+1

Вы попробовали проверку своей консоли? – lifetimes

+0

im, предполагающий умножение на -1, состоит в том, чтобы преобразовать его из отрицательного в положительное, поэтому вы можете просто использовать функцию Math.abs ((width - 1000)/2) – Fabi

+0

@Fabi: Нет, это означает, что значение от положительного до отрицательного , – Guffa

ответ

2

slide - ссылка на переменную с именем slide. Вероятно, вы хотите "slide" (строка), так как ваш img элемент имеет id="slide".

Вы должны потратить некоторое время на ознакомление с инструментами отладки вашего браузера (alert() - это ужасный способ отладки). Было бы отметил ...

ReferenceError: slide is not defined

+0

, который добирается до второй линии, затем снова останавливается. – qaxf6auux

+0

@ Snip3r, потому что вы пропустили '*' между '-1' и' (' – basilikum

+0

спасибо. Как вы можете видеть, я совершенно новый в этом. Возможно, я смогу решить это с помощью отладчика браузера. Я удалю это вопрос – qaxf6auux

0

Вы недостающие разделители вокруг строки здесь:

width = document.getElementById("slide").width; 

Вы пропускаете оператор умножения здесь:

width = -1 * ((width - 1000)/2); 

У вас не хватает строковые разделители и двоеточия в декларациях стиля, а также вы должны соединить стили, иначе вторая будет перезаписываться первой:

document.getElementById("slide").setAttribute("style","margin-left:" + width + "px;margin-right:" + width + "px");