JavaScript-点击可显示更多信息

时间:2018-07-14 10:26:12

标签: javascript dom hide show

如何使按钮仅显示其自身div中的ul? 如何为每个div添加唯一的ID,因为我有一个PHP代码会输出未知数量的div ...

 function myFunction() {
  var x = document.getElementById('table').firstElementChild;
  x.style.display = 'block';
 }
<div id="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button onclick="myFunction()">More info</button>
</div>

<div id="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button onclick="myFunction()">More info</button>
</div>

3 个答案:

答案 0 :(得分:0)

您不必手动传递id,只需将this传递给函数即可引用函数中的当前元素。然后使用previousElementSibling定位ul。请尝试以下操作:

function myFunction(el) {
   var x = el.previousElementSibling;
   x.style.display = 'block';
 }
<div id="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button onclick="myFunction(this)">More info</button>
</div>

<div id="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button onclick="myFunction(this)">More info</button>
</div>

答案 1 :(得分:0)

  1. id属性必须是唯一的,如果您想使用公共标识符,则应该使用class es
  2. 不建议使用内联JavaScript和事件属性,相反,您应该选择要使用JavaScript侦听的元素,或者使用委托的事件侦听器,如下所示。

const toggleInfo = ({ target, parent }) => {
    const hidden = +!!parent.firstElementChild.style.display;
    parent.firstElementChild.style.display = ['none', ''][+hidden];
    target.textContent = `${['More','Less'][+hidden]} info`;
}

document.addEventListener('click', ({ target, target: { parentNode: parent } }) => {
    if("BUTTON" === target.tagName && /table/.test(parent.className)) {
        toggleInfo({ target, parent });
    }
});
<div class="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button>More info</button>
</div>

<div class="table">
  <ul style="display:none;">
    <li>Name</li>
    <li>Number</li>
    <li>Model</li> 
  </ul>
  <button>More info</button>
</div>

答案 2 :(得分:-1)

将ul传递给您的函数:

onclick="myFunction(this.parentNode.children[0])"