Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Что-то onmouseup у меня не хочет правильно работать. (https://javascript.ru/forum/dom-window/8711-chto-onmouseup-u-menya-ne-khochet-pravilno-rabotat.html)

vahrusha 09.04.2010 20:58

Что-то onmouseup у меня не хочет правильно работать.
 
Кратенько HTML
<div style="background-image:url('_ima/but.gif')" id="but1" onmouseover="mybut('but1', 1)" onmouseout="mybut('but1')" onmousedown="mybut('but1', 2)" onmouseup="mybut('but1', 1)">
</div>

Кратенько Javascript
function mybut(elId, flag) {
     if (typeof flag == 'undefined') {flag = 0};
     var elem = document.getElementById(elId).style;
     switch (flag) {
          case 0: elem.backgroundImage = 'url("_ima/but.gif")'; break;
          case 1: elem.backgroundImage = 'url("_ima/but1.gif")'; elem.height = '24px'; elem.paddingTop = '0'; break;
          case 2: elem.backgroundImage = 'url("_ima/but2.gif")'; elem.height = '23px'; elem.paddingTop = '1px';
     }
}

Почему-то у меня при отпускании кнопки мыши срабатывает case 0,
хотя вроде должно срабатывать case 1. Правильно работает только в IE7-8.

Aetae 09.04.2010 21:28

Странно, практически ничего не поменял, но всё работает.)
<script type="text/javascript">
	function mybut(elId, flag) {
	     if (typeof flag == 'undefined') {flag = 0};
	     var elem = document.getElementById(elId).style;
		 var elem2 = document.getElementById('event');
	     switch (flag) {
	          case 0: elem2.innerHTML+='0 | '; break;
	          case 1: elem2.innerHTML+='1 | ';  break;
	          case 2: elem2.innerHTML+='2 | ';
	     }
	}
</script>
<div style="width:336px;height:76px;background-image:url('/forum/images/ca_serenity/misc/logo.gif')"  id="but1" onmouseover="mybut('but1', 1)"  onmouseout="mybut('but1')" onmousedown="mybut('but1', 2)"  onmouseup="mybut('but1', 1)"></div>
<div id='event'>События:</div>

vahrusha 09.04.2010 21:44

Вот тогда код поподробнее. Если кто-нибудь меня тыкнет носом, где я не прав, буду очень признателен.
HTML
<form id="form1" action="" method="post" accept-charset="utf-8">
  <div id="but1" class="but" onmouseover="mybut('but1', 1)" onmouseout="mybut('but1')" onmousedown="mybut('but1', 2)" onmouseup="mybut('but1', 1)" onclick="document.getElementById('form1').submit();">
    <input id="but1_ns" class="but" type="submit" value="войти" />
    <script type="text/javascript">jsbut('but1', 'войти');</script>
  </div>
</form>

CSS
Код:

.but{position:absolute;width:100px;height:26px;cursor:pointer}
.jsbut{width:100px;height:24px;padding-top:2px;background-image:url("_ima/but.gif");text-align:center;font-size:12px}

JS
function jsbut(elId, buttxt) {
  var newDiv = document.createElement('div');
  newDiv.className = 'jsbut';
  newDiv.id = elId + '_js';
  newDiv.innerHTML = buttxt;
  document.getElementById(elId).replaceChild(newDiv, document.getElementById('but1_ns'));
}

function mybut(elId, flag) {
  if (typeof flag == 'undefined') {flag = 0};
  var elem = document.getElementById(elId + '_js').style;
  switch (flag) {
    case 0: elem.backgroundImage = 'url("_ima/but.gif")'; break;
    case 1: elem.backgroundImage = 'url("_ima/but1.gif")'; elem.height = '24px'; elem.paddingTop = '2px'; break;
    case 2: elem.backgroundImage = 'url("_ima/but2.gif")'; elem.height = '23px'; elem.paddingTop = '3px';
  }
}

Aetae 09.04.2010 21:48

А вы уверенны что срабатывает именно case 0, а не case 1, просто с ошибкой?

vahrusha 09.04.2010 22:05

Да вот картинка подставляется вот эта url("_ima/but.gif")
Хотя должна вот эта url("_ima/but1.gif")
Причем, IE7-8 правильно работает. Ладно, завтра на свежую голову смотреть буду.
Спасибо за помощь.

x-yuri 10.04.2010 00:00

Цитата:

Сообщение от vahrusha
Да вот картинка подставляется вот эта url("_ima/but.gif")

а если получше проверить? Вставить в конец onmouseup console.log('onmouseup') и перед switch поставить console.log(flag)?


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