javascript - 使用 Javascript 更改元素 ID

标签 javascript

我正在尝试将 id“character”更改为“characterSelected”

var character = document.getElementById('character');
var characterSelected = document.getElementById('characterSelected');

function klik() {
    character.innerHTML = characterSelected;
}

character.addEventListener('click', klik);

这是我到目前为止所拥有的,但它似乎不起作用。我想仅使用 Javascript 来完成此操作,而不使用 jQuery。

谢谢

最佳答案

你尝试了一些方法,但没有成功。现在是时候查找您错误使用的标准属性和函数了。如果猜测不起作用,请始终寻找可靠的文档。

Mozilla 开发者网络 (MDN) 是一个很好的引用。这是一本关于网络、网络标准和当前浏览器兼容性的维基风格的百科全书。如果您查看有关 innerHTML 的页面,您会发现以下内容:

The Element.innerHTML property sets or gets the HTML syntax describing the element's descendants.

这意味着innerHTML属性用于替换标签的内容,就像您在其中编写HTML一样。不是你想要的。

您想要的是更改元素的 id。如果您搜索元素 id,您将找到 Element.id页。多么实用,有一个例子:

var idStr = elt.id; // Get the id.
elt.id = idStr; // Set the id

但是,这并不能解决您的问题。您看,您在尝试使用 getElementById 函数时猜错了。该函数查看页面并立即找到具有该 id 的元素。如果您一开始没有任何具有 characterSelected id 的元素,那么您设置的此变量在其余时间将为 null。当具有该 id 的元素放置在页面中时,变量不会神奇地更新。

最后,您错过了 id attribute 的目的本身。

Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS).

id 的目的是唯一地标识一个元素。你可能会想:“这就是我正在做的事情”。不。您使用 id 来表示是否选择了某个元素。这是错误的。根据您的目标,我会说:只需将所选元素存储在变量中即可。然后,每当您需要对所选元素执行某些操作时,它就在该变量中。如果您需要该元素的特定样式,那么您可以为其设置一个类。但 id 根本不是为此目的 - 事实上,一旦放置一个元素,id 就不会改变。

关于javascript - 使用 Javascript 更改元素 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009416/

相关文章:

javascript - 递增不起作用

javascript - classlist.toggle() 在移动 Safari 上无法按预期工作

javascript - 如何根据特定页面有条件地在 Gatsby 中呈现组件?

javascript - 使用 Jhipster 进行表单验证

javascript - js 向函数传递附加参数

javascript - ExpressJS : What's the difference between ? 、 +、 * 在字符串模式和正则表达式中?

javascript - AngularJS:来自动态设置模型名称的嵌套对象

javascript - StumbleUpon chrome 扩展如何在 google 主页导航栏上方插入 div?

javascript - http 在 ng-view 范围内获取响应

javascript - Next.js:未定义窗口