Javascript.RU

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

Помогите новичку с фукцией
Привет коллеги!
Это мой первый пост на этом интересном форуме.
Не нашел ветку "Для новичков, чайников, начинающих" поэтому пишу сюды.
Пишу выпадающее меню и тут непонятка возникла над которой сижу 2ой день. Итак суть...
функция изменения картинки плюсика и минусика
так почему-то не пашет:
var flag=false
function imgchange(which) {
if (flag) document.all.which.src = "plus.png"
else document.all.which.src = "minus.png"
flag = !flag
};

А если задать явно
var flag=false
function imgchange(which) {
if (flag) document.all.img2.src = "plus.png"
else document.all.img2.src = "minus.png"
flag = !flag
};

РАБОТАЕТ
Вызываю так
<td onclick="ShowOrHide('tab2'); imgchange('img2');"...
<img id="img2"...

Не подскажете что не так делаю, все перепробывал?
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2011, 23:28
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Сообщение от panacea
Не подскажете что не так делаю, все перепробывал?
А как интерпретатор в записи
Сообщение от panacea
document.all.which.src
должен угадать, что есть переменная (которую Вы, возможно, забыли объявить), а что - нет?


1. В Вашем случае нужно писать document.all[which].src
2. Синтаксис document.all устарел. Используйте id и document.getElementById
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2011, 00:22
Новичок на форуме
Отправить личное сообщение для panacea Посмотреть профиль Найти все сообщения от panacea
 
Регистрация: 14.08.2011
Сообщений: 2

Спасибо.
в итоге получилось так:
var flag=false
function imgchange(id) {
      var item = null;
      if (document.getElementById) {
        item = document.getElementById(id);
      } else if (document.all){
        item = document.all[id];
      } else if (document.layers){
        item = document.layers[id];
      }
      if (!item) {
      }
      else if (item.src) {
	if (flag) { item.src = "plus.png"; }
	else { item.src = "minus.png"; }
      }else{ item.src = "plus.png"; }
flag = !flag
};

Знакомый говорит, что через jquery было бы проще. Я не шарю, может быть...
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2011, 00:39
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

} else if (document.all){
        item = document.all[id];
      } else if (document.layers){
        item = document.layers[id];
В этом нет необходимости. Браузеры без поддержки document.getElementById уже успешно вымерли. Можно написать так:
var flag = false

function imgchange(id) {
	var item = document.getElementById(id);
	if (!item) return;
	if (item.src) {
		item.src = flag ? "plus.png" : "minus.png";
	} else {
		item.src = "plus.png";
	}
	flag = !flag;
};
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
помогите новичку с поиском! real-man AJAX и COMET 8 12.06.2011 14:07
Выезжающая картинка. помогите плз новичку(( animus Элементы интерфейса 4 22.04.2011 14:31
Помогите новичку serly Общие вопросы Javascript 1 13.04.2011 10:47
Помогите пожалуйста новичку... knyazsergei Общие вопросы Javascript 2 16.06.2010 23:30
Помогите новичку с выпадающим списком interest Элементы интерфейса 5 19.05.2010 13:15