События указателя не работают

#javascript #html #css

#javascript #HTML #css

Вопрос:

У меня есть список из следующих элементов :

 <li id="toolbar-elements-right">
  <img id="toolbar-icons" src="images/delete_resource.png" alt="" title="Delete VM" onclick="removeNode()">
  <img id="toolbar-icons" src="images/power_off.png" alt="" title="Stop VM" onclick="changeInstanceStatus('Stop')">
  <img id="toolbar-icons" src="images/power_on.png" alt="" title="Start VM" onclick="changeInstanceStatus('Start')">
  <img id="toolbar-icons_zoom-in" src="images/zoom-in-icon.png" alt="" title="Zoom In" onclick="zoomNodeIn()">
  <img id="toolbar-icons_zoom-out" src="images/zoom-out-icon.png" alt="" title="Zoom Out" onclick="zoomNodeOut()">
</li>
  

Я хочу, чтобы весь список был отключен, кроме двух последних изображений в функции. Я делаю что-то вроде этого :

   document.getElementById('toolbar-elements-right').style.pointerEvents = 'none';
  document.getElementById('toolbar-icons_zoom-in').style.pointerEvents = 'auto';
  document.getElementById('toolbar-icons_zoom-out').style.pointerEvents = 'auto';
  

Однако первый элемент «панель инструментов-icons_zoom-in» включен, но второй элемент «панель инструментов-icons_zoom-out» остается отключенным. Есть способ решить эту проблему?

Ответ №1:

Вместо этого вы можете отключить только первые элементы. Я добавил класс css для отключенных элементов и применил css через JavaScript.

 <li id="toolbar-elements-right">
  <img class="disable-pointer" id="toolbar-icons" src="images/delete_resource.png" alt="" title="Delete VM" onclick="removeNode()">
  <img class="disable-pointer" id="toolbar-icons" src="images/power_off.png" alt="" title="Stop VM" onclick="changeInstanceStatus('Stop')">
  <img class="disable-pointer" id="toolbar-icons" src="images/power_on.png" alt="" title="Start VM" onclick="changeInstanceStatus('Start')">
  <img id="toolbar-icons_zoom-in" src="images/zoom-in-icon.png" alt="" title="Zoom In" onclick="zoomNodeIn()">
  <img id="toolbar-icons_zoom-out" src="images/zoom-out-icon.png" alt="" title="Zoom Out" onclick="zoomNodeOut()">
</li>
  

И JS

 var elem = document.querySelectorAll(".disable-pointer");
var i;
for (i = 0; i < elem.length; i  ) {
    elem[i].style.pointerEvents = 'none';
}
  

Если вы предпочитаете простой CSS, то это намного проще, чем делать

 .disable-pointer {
  pointer-events: none;
}
  

Ответ №2:

В моем случае это работает. Проверьте свою функцию onClick zoomNodeOut(), если она работает.

https://jsfiddle.net/r110668L/

     <li id="toolbar-elements-right">
       <img id="toolbar-icons" style="width:100px; height:100px; background:#111; margin:5px;display: inline-block;" src="images/delete_resource.png" alt="" title="Delete VM" onclick="alert(1)">
       <img id="toolbar-icons" style="width:100px; height:100px; background:#111; margin:5px;display: inline-block;" src="images/power_off.png" alt="" title="Stop VM" onclick="alert(2)">
       <img id="toolbar-icons" style="width:100px; height:100px; background:#111; margin:5px;display: inline-block;" src="images/power_on.png" alt="" title="Start VM" onclick="alert(3)">
       <img id="toolbar-icons_zoom-in" style="width:100px; height:100px; background:#111; margin:5px;display: inline-block;" src="images/zoom-in-icon.png" alt="" title="Zoom In" onclick="alert(4)">
       <img id="toolbar-icons_zoom-out" style="width:100px; height:100px; background:#111; margin:5px;display: inline-block;" src="images/zoom-out-icon.png" alt="" title="Zoom Out" onclick="alert(5)">
   </li>
  

Примечание: в вашем HTML есть основная ошибка. Вы видите, что селектор идентификаторов должен быть уникальным на странице / DOM. У вас не может быть более одного элемента с одинаковым идентификатором.

Комментарии:

1. Да, сейчас он работает. Я не знаю, почему это не работало

Ответ №3:

ДЕМОНСТРАЦИЯ:

http://plnkr.co/edit/2g0hsfgeKRImzXbSPF1p?p=preview

Он работает нормально. Пожалуйста, проверьте демонстрацию.

 document.getElementById('toolbar-elements-right').style.pointerEvents = 'none';
document.getElementById('d').style.pointerEvents = 'auto';
document.getElementById('e').style.pointerEvents = 'auto';  
 <div id="toolbar-elements-right">
  <div id="a" onclick="alert('a')">a</div>
  <div id="b" onclick="alert('b')">b</div>
  <div id="c" onclick="alert('c')">c</div>
  <div id="d" onclick="alert('d')">d</div>
  <div id="e" onclick="alert('e')">e</div>
</div>