Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.04.2013, 22:41
Новичок на форуме
Отправить личное сообщение для sasha-ua Посмотреть профиль Найти все сообщения от sasha-ua
 
Регистрация: 23.04.2013
Сообщений: 4

Не работает Javascript при заданном doctype
Здравствуйте.

Скрипт:
function resizeRock() {
  document.getElementById("rockImg").style.height = (document.body.clientHeight - 100) * 0.9;
}

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" xml:lang="en" lang="en">

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <title>iRock - The Virtual Pet Rock</title>
   <script type="text/javascript" src="js/script.js"></script>
</head>
  <body onload="resizeRock();">
    <div style="margin-top:100px; text-align:center">
      <img id="rockImg" src="images/rock.png" alt="iRock" style="cursor:pointer" />
    </div>
  </body>
</html>

Если убрать doctype, скрипт работает.. Но почему так происходит, и что с этим делать? ведь нельзя же верстать без doctyp'a..
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2013, 05:10
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Может как-нибудь так?
function resizeRock() {
  document.getElementById("rockImg").style.height = (document.documentElement.clientHeight - 100) * 0.9;
}


А вообще, если Вы хотите высоту картинки рястянуть на всю высоту окна браузера, то лучше это сделать через CSS:
#rockImg {position:absolute; height-min:100%;}

Последний раз редактировалось ruslan_mart, 24.04.2013 в 05:15.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2013, 09:56
Новичок на форуме
Отправить личное сообщение для sasha-ua Посмотреть профиль Найти все сообщения от sasha-ua
 
Регистрация: 23.04.2013
Сообщений: 4

Как сделать это css я понимаю, но сейчас учу javascript по этой супер-книге (http://www.ozon.ru/context/detail/id/7301823/) и на первых примерах уже столкнулся с фатальной проблемой.
Мало того что код не работает с doctype, так еще за то время что ее переводили успел устареть метод onresize..

И в принципе в голове не укладывается как doctype влияет на javascript?

Последний раз редактировалось sasha-ua, 24.04.2013 в 10:01.
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2013, 10:25
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от sasha-ua
Как сделать это css я понимаю, но сейчас учу javascript по этой супер-книге (http://www.ozon.ru/context/detail/id/7301823/) и на первых примерах уже столкнулся с фатальной проблемой.
Мало того что код не работает с doctype, так еще за то время что ее переводили успел устареть метод onresize..

И в принципе в голове не укладывается как doctype влияет на javascript?
устареть? без доктайпа браузер в каком режиме работает? мож правильнее -"ещё не родился" ?

Сообщение от sasha-ua
document.getElementById("rockImg").style.height = (document.body.clientHeight - 100) * 0.9;
а единицы измерения указывать не нужно ? не? ну и соответственно приводить к числовому типам, строки?

Последний раз редактировалось dmitriymar, 24.04.2013 в 10:35.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2013, 18:54
Новичок на форуме
Отправить личное сообщение для sasha-ua Посмотреть профиль Найти все сообщения от sasha-ua
 
Регистрация: 23.04.2013
Сообщений: 4

Спасибо за подсказку. Добавил единицы измерения и все заработало включая onresize:
function resizeRock() {
  document.getElementById("rockImg").style.height = (document.documentElement.clientHeight - 100) * 0.9 +"px";
}

Приводить к числовому типу не пришлось.
Прочитал что без doctype работает quirk mode.. Получается в старых браузерах единицы измерения по умолчанию были в пикселях?
Ответить с цитированием
  #6 (permalink)  
Старый 22.07.2013, 11:28
Новичок на форуме
Отправить личное сообщение для webmaker Посмотреть профиль Найти все сообщения от webmaker
 
Регистрация: 22.07.2013
Сообщений: 8

Та же фигня, даже если я добавляю "px"
<!DOCTYPE html>
<head>
<meta http-equiv="content-type" content="text/html" />
<meta name="author" content="Valval" />

<title>IRock - виртуальный любимец Rock</title>
<script type="text/javascript" src="cookie.js"></script>
<script type="text/javascript">
var userName;

function resizeRock() {
document.getElementById("rockImg").style.height = (document.body.clientHeight - 100) * 0.9 + "px";
}
function greetUser() {
if(navigator.cookieEnabled)
userName = readCookie("irock_username");
if (userName) alert("Hello, " + userName + "I meesed you.");
else alert('Hello, I am your pet rock.');
}

function touchRock () {

if(userName){
alert ("Спасибо за внимание, " + userName + ".");
}
else {
userName = prompt("Как вас зовут?", "Введите ваше имя.");
if (userName) {
alert ("Рад Вас видеть, " + userName + ".");
if(navigator.cookieEnabled)
writeCookie("irock_username", userName, 5*365);
else alert("Сорри, но ваш браузер не поддерживает куки.(((")
}
}
document.getElementById("rockImg").src = "rock_happy.png";
setTimeout("document.getElementById('rockImg').src = 'rock.png';", 5 * 60 * 1000);
}
</script>

</head>

<body onload="resizeRock(); greetUser();" onresize="resizeRock();">

<div style="margin-top: 100px; text-align: center;">
<img id="rockImg" src="rock.png" alt="IRock" style="cursor: pointer;" onclick="touchRock();" />
</div>

</body>
</html>

Последний раз редактировалось webmaker, 22.07.2013 в 11:51.
Ответить с цитированием
  #7 (permalink)  
Старый 22.07.2013, 12:00
Новичок на форуме
Отправить личное сообщение для webmaker Посмотреть профиль Найти все сообщения от webmaker
 
Регистрация: 22.07.2013
Сообщений: 8

Сообщение от Ruslan_xDD Посмотреть сообщение
Может как-нибудь так?
function resizeRock() {
  document.getElementById("rockImg").style.height = (document.documentElement.clientHeight - 100) * 0.9;
}

Спасибо, именно это и помогло
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JavaScript, Выделить все значения в multiselect при нажатии submit VBeregovoy Общие вопросы Javascript 2 06.02.2013 20:09
Скрипт не работает при заходе на данную страницу, но работает при рефреше страницы foker jQuery 0 26.11.2012 12:27
Не работает скрипт при обновлении элемента без перезагрузки страницы Jex Events/DOM/Window 0 28.09.2012 16:43
частично не работает JavaScript в мазило Diabol Firefox/Mozilla 3 02.02.2010 21:48
DatePicker не работает при сипользование innerHTML AJlekceu jQuery 2 26.10.2008 17:49