javascript - insideText 显示内容但不允许我更改它

标签 javascript

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

(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';确实改变了字符串变量。但它不会更改 anchor 标记的文本。

也许有一些显而易见的事情?

最佳答案

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

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

关于javascript - insideText 显示内容但不允许我更改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6840588/

相关文章:

javascript - innerHTML 的内部工作原理

javascript - 脚本标签调用的 JQuery 选择器

javascript - Vuetify 定时通用警报组件

javascript - 确定 Mozilla 4 内容区域的边界矩形

javascript - 将 `__proto__` 用作使用 `Object.create(null)` 创建的对象的属性名称是否安全?

javascript - 如何取消Meteor.setTimeout?

javascript - 如何在javascript中更改小写文本但保留大写字母?

javascript - 指定哪个区域是日期排序

javascript - 如何根据某些条件从对象数组中删除元素

javascript - 使用 rails 和 turbolinks 运行 facebook pixel