Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите новичку с фукцией (https://javascript.ru/forum/misc/20712-pomogite-novichku-s-fukciejj.html)

panacea 14.08.2011 22:17

Помогите новичку с фукцией
 
Привет коллеги! :)
Это мой первый пост на этом интересном форуме.
Не нашел ветку "Для новичков, чайников, начинающих" поэтому пишу сюды.
Пишу выпадающее меню и тут непонятка возникла над которой сижу 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"...

Не подскажете что не так делаю, все перепробывал?

B@rmaley.e><e 14.08.2011 23:28

Цитата:

Сообщение от panacea
Не подскажете что не так делаю, все перепробывал?

А как интерпретатор в записи
Цитата:

Сообщение от panacea
document.all.which.src

должен угадать, что есть переменная (которую Вы, возможно, забыли объявить), а что - нет?


1. В Вашем случае нужно писать document.all[which].src
2. Синтаксис document.all устарел. Используйте id и document.getElementById

panacea 15.08.2011 00:22

Спасибо.
в итоге получилось так:
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 было бы проще. Я не шарю, может быть...

B@rmaley.e><e 15.08.2011 00:39

} 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;
};


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