【问题标题】:Get the child element and modify the text获取子元素并修改文本
【发布时间】:2014-04-04 03:18:08
【问题描述】:

当使用 JavaScript 单击按钮时,我需要将 span 元素中的文本从 [+] 切换到 [-]。如何使用当前的切换功能实现此目的?

HTML

...
<ul>
  ...
  <li>
    <ul>
      <h3>header</h3>
      <a href="#">url-link</a>
      <p>description</p>
    <ul>
    <div class="department" style="display: none;">
      <ul class="placemark"> ... </ul>
      <ul class="contact"> ... </ul>
    </div>
    <button class="department-collapse" onclick="toggle(this)">
      <span>[+]</span> Contact Information
    </button>
  </li>
  ...
<ul>
...

JavaScript

function toggle(self) {
  var n = self.parentNode.childNodes;
  
  for(var i = 0; i < n.length; i++) {
    if (n[i].className == 'department') {
      n[i].style.display = n[i].style.display == '' ? 'none' : '';
    }
  }
}

【问题讨论】:

    标签: javascript dom-manipulation


    【解决方案1】:

    在你的函数中,验证你的 span(JS 代码):

    function toggle(self) {
        var n = self.parentNode.childNodes;
    
        for(var i = 0; i < n.length; i++) {
            if (n[i].className == 'department') {
                n[i].style.display = n[i].style.display == '' ? 'none' : '';
            }
        }
    
        var mySpan = self.childNodes[0];
        mySpan.innerHTML = mySpan.innerHTML == '[+]' ? '[-]' : '[+]';
    }
    

    【讨论】:

    • 使用 0 索引并不总是有效。我无法完全控制正在生成的 HTML,因此根据结果 self.childNodes 可能会返回 [text, span, text, item: function] 或 [span, text, function ].
    • 因此,将 //self.childNodes[0]// 更改为 //self.getElementsByTagName("span")[0]//
    猜你喜欢
    • 2018-11-08
    • 2011-11-18
    • 2013-10-19
    • 2021-11-09
    • 1970-01-01
    • 2015-05-10
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    相关资源
    最近更新 更多