Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   еще один вопрос про кнопки и события (https://javascript.ru/forum/misc/34773-eshhe-odin-vopros-pro-knopki-i-sobytiya.html)

f0rzik 18.01.2013 13:33

еще один вопрос про кнопки и события
 
начал изучать js, придумываю себе разные задания, возник вопрос:
как лучше организовать такую задумку?
имеется набор картинок, которые подвязаны к определенной комбинации клавиш.
нажимаем кнопку, или комбинацию кнопок, и получаем изображение.
а как реализвать такой принцып:
1.нажимаем кнопку 1 картинка меняется на img1
2.нажимаем кнопку 2 картинка меняется на img2
3.нажимаем кнопку 1 картинка меняется на img3
4.нажимаем кнопку 78 картинка меняется на img4
итд
то есть функцию с onclick не получится назначить каждой кнопке.
проверять по id изображения какое сейчас, и какая кнопка нажата менять его?
или создать массив с последовательностью кнопок, и как то отслеживать нажатия, но как тода быть с комбинациями кнопок?

ksa 18.01.2013 15:13

Цитата:

Сообщение от f0rzik
имеется набор картинок, которые подвязаны к определенной комбинации клавиш

Как именно они "имеются"?

Цитата:

Сообщение от f0rzik
подвязаны к определенной комбинации клавиш.
нажимаем кнопку, или комбинацию кнопок

Что такое "кнопки" и "клавиши"?

Цитата:

Сообщение от f0rzik
нажимаем кнопку, или комбинацию кнопок, и получаем изображение

Одно или несколько?

ОлегА 18.01.2013 15:20

это пример если на странице имеется 1 картинка
<input type="button" value="button1" onclick="NextImg();">
<input type="button" value="button2" onclick="NextImg();">
<input type="button" value="button3" onclick="NextImg();">
<input type="button" value="button4" onclick="NextImg();">

var img_num = 1;

function NextImg(){
   document.getElementsByTagName('img')[0].src = "../images/img"+img_num+".png";
   img_num++;
}

f0rzik 18.01.2013 15:35

по поводу картинок, можно создать массив, или просто переменные.
кнопки:
<input type="button" id="1" value="1" >
изображение получаем одно.

то есть имея определенные комбинации кнопок выводить изображения.
грубо говоря есть 5 изображений.
10 кнопок
как хочу выводить:
1кнопка-изображение 2
3кнопка-изображение 3
4кнопка-изображение 2
55кнопка-изображение 1
3кнопка-изображение4
76кнопка-изображение 5
4кнопка-изображение 2

как такое можно реализовать?

ОлегА 18.01.2013 15:51

Цитата:

Сообщение от f0rzik
как такое можно реализовать?

ну тогда через массив

....
<input type="button" id="4" value="button4" onclick="NextImg(this);">
....


var img_arr = [1,2,3,2,1,4,5,2];

function NextImg(el){
   id = el.id;
   
   if(img_arr[id] !== undefined){
       document.getElementsByTagName('img')[0].src = "../images/img"+img_arr[id]+".png";
   }
}

Perumov 18.01.2013 15:59

Ребята, вопрос не по сабжу, но тоже про кнопки.
Возникла проблема с кнопкой, а именно: после вызова функции js, нужной кнопке "Уже в корзине" присваивается стиль display:inline; хотя css правилом в классе .button-css-blue определено block, переопределение стиля вызывает проблемы с правильным отображением кнопки "Уже в корзине". Для наглядности код:
<p class="buy-block-button"><a href="#" class="button-css-green" onclick="return false">Купить!</a></p>
<p class="buy-block-button"><a href="#" class="button-css-blue">Уже в корзине</a></p>

.buy-block-button .button-css-blue{
			display:none;
			margin:5px 0 0 0;
			font-size:.78em;
			font-weight:bold;
		}

$(function(){
    $(".buy-block-button .button-css-green").on("click", function(){
        $(".buy-block-button .button-css-green").hide();
        $(".buy-block-button .button-css-blue").show();
    });
});

Скрипт js работает в связке с библиотекой jquery 1.8.3.
Попробовал переопределить стиль через html:
<p class="buy-block-button"><a href="#" class="button-css-blue" style="display:none;">Уже в корзине</a></p>

A в css удалил правило display:none; Но все равно после вызова функции js кнопка съезжает в сторону, хотя уже и выглядит как блочный элемент.
Подскажите, пожалуйста, где тут проблема?

ksa 18.01.2013 16:07

Цитата:

Сообщение от f0rzik
как хочу выводить:
1кнопка-изображение 2
3кнопка-изображение 3
4кнопка-изображение 2
55кнопка-изображение 1
3кнопка-изображение4
76кнопка-изображение 5
4кнопка-изображение 2

как такое можно реализовать?

Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
var o={
	1: 2,
	3: 3,
	4: 2,
	55: 1,
	3: 4,
	76: 5,
	4: 2
}
var a=[
	'изображение 1',
	'изображение 2',
	'изображение 3',
	'изображение 4',
	'изображение 5',
];
function go(Id) {
	alert(a[o[Id]-1]);
};
</script>
</head>
<body>
<input type="button" id='3' value="Test 3" onclick="go(this.id);" />
<input type="button" id='55' value="Test 55" onclick="go(this.id);" />
</body>
</html>

ksa 18.01.2013 16:10

Цитата:

Сообщение от Perumov
хотя css правилом в классе .button-css-blue определено block

Где?
Цитата:

Сообщение от Perumov
.buy-block-button .button-css-blue{
            display:none;
            /*...*/
}

Тут этого нет...


Perumov, пример нормальный сделай...

Perumov 18.01.2013 16:24

ksa,
.buy-block-button .button-css-blue - это переопределение правил для конкретного вложенного блока, в основном правиле я указывал block, не посчитал нужным выкладывать все css правила (они не влияли на проблему). Но я уже разобрался в проблеме, спасибо. В этом правиле margin:5px 0 0 0; я добавил левый отрицательный отступ на то расстояние, на которое съезжала кнопка после вызова функции js и все стало красиво. Все равно спасибо! Отдельное спасибо за минус в карму))

ksa 18.01.2013 16:29

Цитата:

Сообщение от Perumov
.buy-block-button .button-css-blue - это переопределение правил для конкретного вложенного блока, в основном правиле я указывал block

А с чего ты взял, что то "основное" имеет больший приоритет чем это? :D

Perumov 18.01.2013 16:33

В прошлом посте я не правильно выразился, это было не переопределение правил, а назначение новых для конкретного случая (в правилах .button-css-blue нет внешних отступов), поэтому в css не было конфликтов. Конфликт создавала библиотека jquery, поэтому после задания отрицательного отступа все сало красиво...
Кнопочка замечательно меняется, осталось только подумать как на это событие еще повесить модальное окно...

f0rzik 19.01.2013 15:36

Цитата:

Сообщение от ksa (Сообщение 227993)
Как вариант...

<!DOCTYPE html>
<html>
<head>
<!--
<script src="http://code.jquery.com/jquery-latest.js"></script>
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
</style>
<script type="text/javascript">
var o={
	1: 2,
	3: 3,
	4: 2,
	55: 1,
	3: 4,
	76: 5,
	4: 2
}
var a=[
	'изображение 1',
	'изображение 2',
	'изображение 3',
	'изображение 4',
	'изображение 5',
];
function go(Id) {
	alert(a[o[Id]-1]);
};
</script>
</head>
<body>
<input type="button" id='3' value="Test 3" onclick="go(this.id);" />
<input type="button" id='55' value="Test 55" onclick="go(this.id);" />
</body>
</html>

все это хорошо и в самом простом варианте можно было бы просто сделать функцию и передавать в нее id, но я наверное не правильно сформулировал вопрос:
55-два раза нажать на кнопку 5
а выводить изображения я хочу в <img src="изображение.jpg" id="img">

ksa 19.01.2013 19:26

Цитата:

Сообщение от f0rzik
я наверное не правильно сформулировал вопрос:
55-два раза нажать на кнопку 5

Что тогда означает 76? :D

f0rzik 19.01.2013 20:04

Цитата:

Сообщение от ksa (Сообщение 228191)
Что тогда означает 76? :D

ну комбинация из кнопки 7+кнопка 6 :)

как я понимаю последовательность изображений можно поместить в массив, только вот как их вызывать из него, если не использовать комбинации (к примеру: нажать 7 и 6 и изображение меняется), то более менее понятно, а так...:(

Deff 19.01.2013 20:48

f0rzik,
Делают либо кнопку смены слкдующий/предыдущий по кругу,
бывают добавляют строчку микро массив кружков/квадратов, нажатие на которые открывает изо, выделяя открытый кружок/квадрат цветом

*********

f0rzik 19.01.2013 23:19

а есть возможность передать одной переменной два значениея id (document.getElementById('5') и document.getElementById('5')) а потом их использовать?
и создать массив с изображениями в нужном для вывода порядке, и выводить их если условие совпадает?


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