我在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';
确实更改了字符串变量。但它不会改变锚标记的文本。
也许是显而易见的事情?
答案 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"