将document.getElementById存储在变量中?

Bra*_*amt 0 html javascript document getelementbyid

我有这个脚本,应该在单击按钮时更改按钮的文本.

<body>
   <button onclick="toggleText(this);" id="id">Edit</button>
</body>

function toggleText(element){
    var text = document.getElementById(element.id).textContent;

    if (text == 'Edit') {
        text = 'Done';
    } else {
        text = 'Edit';
    }
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.它只适用于document.getElementById(element.id).textContent直接放入if语句的情况.

如何正确存储变量?

Sam*_*nen 6

由于您已经获得了元素,因此您无需再次获取它.你可以使用元素.

但是你无法改变它的原因是你只是改变包含文本的变量.它没有指向元素的属性.你需要使用这个:

function toggleText(element){
  var text = element.textContent;

  if (text == 'Edit') {
    element.textContent = 'Done';
  } else {
    element.textContent = 'Edit';
  }
}
Run Code Online (Sandbox Code Playgroud)


Oma*_*ady 5

当您访问时,document.getElementById(element.id).textContent您获得的是它的价值,而不是参考。所以对它的更改不会影响元素。

但是当您将元素分配给变量时,它会得到对它的引用。

var element = document.getElementById(element.id);
if (element.textContent == 'Edit') {
        element.textContent = 'Done';
    } else {
        element.textContent = 'Edit';
}
Run Code Online (Sandbox Code Playgroud)