Javascript.RU

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

javascript, doctype и FF
Добрый день!
есть функция
function upperme(inputstr,maxlen,inputnum)
{
  if (inputstr.value.length > maxlen)
      inputstr.value = inputstr.value.substring(0, maxlen);
 inputnum.innerHTML = 'Осталось '+(maxlen - inputstr.value.length)+' символов';
}


прописан doctype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">


В IE работает в FF нет.

Помогите, пожалуйста!
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2010, 20:39
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

http://javascript.ru/tutorial/dom/search
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2010, 20:50
Новичок на форуме
Отправить личное сообщение для DEADCAT Посмотреть профиль Найти все сообщения от DEADCAT
 
Регистрация: 23.03.2010
Сообщений: 5

спасибо за ссылку, я не ас в javascript.

переделал вот так

function upperme(inputstr,maxlen,inputnum)
{
  if (document.getElementsByName('job_requirements').value.length > maxlen)
      document.getElementsByName('job_requirements').value = document.getElementsByName('job_requirements').value.substring(0, maxlen);
 document.getElementById('numReq').innerHTML = 'Осталось '+(maxlen - document.getElementsByName('job_requirements').value.length)+' символов';
}


По ходу не то переделал. Не работает. Можете еще подсказать?
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2010, 21:17
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

getElementsByName возвращает коллекцию элементов.
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2010, 21:45
Новичок на форуме
Отправить личное сообщение для DEADCAT Посмотреть профиль Найти все сообщения от DEADCAT
 
Регистрация: 23.03.2010
Сообщений: 5

поправил, explorer написал, что
(document.getElementByName('job_requirements').value.length
не поддерживает это свойство или метод...
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2010, 21:47
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Правильно, метода getElementByName не существует
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2010, 21:52
Новичок на форуме
Отправить личное сообщение для DEADCAT Посмотреть профиль Найти все сообщения от DEADCAT
 
Регистрация: 23.03.2010
Сообщений: 5

Вот что в итоге получилось:
<SCRIPT type="text/javascript">
function upperme(inputstr,maxlen,inputnum)
{
  if (document.getElementById('job_requirements').value.length > maxlen)
      document.getElementById('job_requirements').value = document.getElementById('job_requirements').value.substring(0, maxlen);
 document.getElementById('numReq').innerHTML = 'Осталось '+(maxlen - document.getElementById('job_requirements').value.length)+' символов';
}
</SCRIPT>

<textarea name='job_requirements' id="job_requirements" rows='7' cols='35'
onfocus="upperme(this,8,numReq)"
onchange="upperme(this,8,numReq)"
onkeyup="upperme(this,8,numReq)"
onkeydown="upperme(this,8,numReq)"
onkeypress="upperme(this,8,numReq)"></textarea>
<label id="numReq" for="job_requirements"> </label>


Только в FF все равно не работает...
Ответить с цитированием
  #8 (permalink)  
Старый 23.03.2010, 22:02
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Сообщение от DEADCAT
upperme(this,8,numReq)
Здесь несуществующая переменная numReq, используйте Firebug для просмотра ошибок.

И ссылку на элемент можно запоминать, чтобы 10 раз не искать:
var job_req = document.getElementById('job_requirements');
  if (job_req.value.length > maxlen)
      job_req.value = job_req.value.substring(0, maxlen);
      …
Ответить с цитированием
  #9 (permalink)  
Старый 23.03.2010, 22:13
Новичок на форуме
Отправить личное сообщение для DEADCAT Посмотреть профиль Найти все сообщения от DEADCAT
 
Регистрация: 23.03.2010
Сообщений: 5

спасибо! все работает. Странно что все это в IE работало...
Ответить с цитированием
  #10 (permalink)  
Старый 23.03.2010, 22:17
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Сообщение от DEADCAT
Странно что все это в IE работало...
Просто в IE для каждого элемента с идентификатором создается глобальная ссылка по имени идентификатора, но это нестандартное поведение, поэтому другие браузеры, при переключении в Standards Compliant Mode (добавление DOCTYPE), перестают так делать, а в Quirks Mode (без DOCTYPE) добавляют глобальные ссылки для совместимости со старыми сайтами.

Последний раз редактировалось Octane, 23.03.2010 в 22:27.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Другой взгляд на javascript Дубров Олег Javascript под браузер 24 27.05.2017 09:15
Помогите с javascript andruhin Общие вопросы Javascript 12 04.05.2012 09:05
Зависимость JavaScript от doctype Kolyaj Общие вопросы Javascript 2 27.10.2009 20:47
JavaScript на Яндекс.Фотки - почему тормозит браузеры? ZavFirefox Javascript под браузер 23 27.09.2009 18:24
Влияет ли Doctype на javascript demi Общие вопросы Javascript 8 31.01.2009 10:09