![](/img/trans.png)
[英]How to make elements added in JavaScript react to onclick like ones added in HTML?
[英]How to make elements added in JavaScript react the same as added in HTML?
我正在嘗試在 JavaScript 中添加新元素,當我將鼠標放在 hover 上時,我想查看 innerHTML 中有多少個字母。 function 適用於 html 中添加的元素,但新元素不適用。
var input = document.getElementById("input") var button = document.getElementById("button"); button.onclick = function () { var p = document.createElement("p"); p.innerHTML = input.value; document.body.appendChild(p); p.id="p"; } var ar = document.getElementsByTagName("p"); for (var i = 0; i < ar.length; ++i) { ar[i].title=ar[i].innerHTML.length; }
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <input id="input"></input> <button type="button" id="button"> click</button> <p>p1</p> <p>p2</p> </body> </html>
我想要達到的目標:元素 I hover on 的字母數,
我得到的是:我在 hover 上的元素的字母數,但只有在 html 中添加的那些。
發生這種情況是因為您僅在頁面加載時添加標題。 創建新元素時不會添加標題。 您應該在單擊按鈕時執行類似的操作:
button.onclick = function () {
var p = document.createElement("p");
p.innerHTML = input.value ;
document.body.appendChild(p);
p.id="p";
p.title = input.value.length;
}
您可以像這樣更改您的點擊處理程序:
button.onclick = function () {
var p = document.createElement("p");
p.innerHTML = input.value ;
document.body.appendChild(p);
p.id="p";
p.title = input.value.length
}
不過,最好制作一個新的 function ,它將執行此代碼,以便您減少代碼重復,即我會像這樣重寫它:
function applyFormatting(pElement) {
pElement.title = pElement.innerHTML.length
}
button.onclick = function () {
var p = document.createElement("p");
p.innerHTML = input.value ;
document.body.appendChild(p);
p.id="p";
applyFormatting(p);
}
var ar = document.getElementsByTagName("p");
for (var i = 0; i < ar.length; ++i) {
applyFormatting(ar[i]);
}
這樣,您要應用於現有 p 元素的“格式”集中在 function 中,並且您知道這些元素將經歷完全相同的轉換。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.