innerText显示内容但不允许我更改它

时间:2011-07-27 07:04:04

标签: javascript

我在A标签上的onclick事件后激活了JS函数。这是代码:

(function(MTM) {
  MTM.selectAllNone = function(e) {
    var string = e.target.textContent || e.srcElement.innerText;
    var list = document.getElementById('my-div');
    var inputs = list.getElementsByTagName('input');
    var length = inputs.length;
    if (string == 'Select all') {
      for (var i=0; i<length; i++) {
        if (inputs[i].getAttribute('type') == 'checkbox') {
          inputs[i].setAttribute('checked', 'checked');
        }
      }
      string = 'Select none';
    }
    else {
      for (var i=0; i<length; i++) {
        if (inputs[i].getAttribute('type') == 'checkbox') {
          inputs[i].removeAttribute('checked');
        }
      }
      string = 'Select all';
    }
  };
}(window.MTM = window.MTM || {}));

在A标签上,这里是:

<a href="javascript:void(0);" onclick="MTM.selectAllNone(event);">Select all</a>

现在,在调试时,我可以看到“string”包含文本“Select all”。它贯穿if (string == 'Select all')。行string = 'Select none';确实更改了字符串变量。但它不会改变锚标记的文本。

也许是显而易见的事情?

1 个答案:

答案 0 :(得分:4)

var string = e.target.textContent并不意味着string成为e.target.textContent的别名,这意味着string points为相同的。当您执行string = "blah"时,您只是指向 string不同的值。您需要将.textContent的属性e.target指向您想要的值新值。

if (e.target.textContent != null) e.target.textContent = "Select all"
if (e.srcElement.innerText != null) e.srcElement.innerText = "Select all"