gpt4 book ai didi

javascript - 使用javascript动态创建元素

转载 作者:行者123 更新时间:2023-11-29 22:41:21 24 4
gpt4 key购买 nike

我需要在用户单击链接时动态创建文本框。我还需要根据用户的决定删除该文本框。我正在尝试以下脚本。

    <script language="JavaScript" type="text/javascript">
var Dom = {
get: function(el) {
if (typeof el === 'string') {
return document.getElementById(el);
} else {
return el;
}
},
add: function(el, dest) {
var el = this.get(el);
var dest = this.get(dest);
dest.appendChild(el);
},
remove: function(el) {
var el = this.get(el);
el.parentNode.removeChild(el);
}
};
var Event = {
add: function() {
if (window.addEventListener) {
return function(el, type, fn) {
Dom.get(el).addEventListener(type, fn, false);
};
} else if (window.attachEvent) {
return function(el, type, fn) {
var f = function() {
fn.call(Dom.get(el), window.event);
};
Dom.get(el).attachEvent('on' + type, f);
};
}
}()
};
Event.add(window, 'load', function() {
var i = 0;
Event.add('add-element', 'click', function() {
var el = document.createElement('p');
el.innerHTML = '<br><input type="text">Remove(' + ++i + ')';
Dom.add(el, 'content');
Event.add(el, 'click', function(e) {
Dom.remove(this);
});
});
});

</script>
<style>
#add-element {
cursor: pointer;
}

</style>
<body>

<div id="doc">
<p id="add-element">Add Elements</p>
<div id="content"></div>
</div>

</body>

它将创建元素并删除元素。但是,它不允许我在新创建的文本框中输入文本(如果我需要的话)。我怎么了。请继续前进......请

最佳答案

What is wrong with me.

对自己有点苛刻!

您添加了行删除 click <p> 的事件处理程序元素。点击事件通过他们的祖先向上冒泡,所以如果你点击 <input>元素聚焦它,它的父元素 <p>也会收到一次点击,并因此删除该行。

我建议只将点击事件放在“删除”文本上。例如:

var row= document.createElement('div');
val remover= document.createElement('div');
var input= document.createElement('input');
remover.appendChild(document.createTextNode('Remove('+(++i)+')'));
row.appendChild(input);
row.appendChild(remover);
Dom.add(row, 'content');
Event.add(remover, 'click', function(e) {
Dom.remove(row);
});

尽管将“添加”和“删除”操作按钮(<input type="button"><button>)都设为可访问性可能会更好,但如果您不想要它们,则样式不要看起来像按钮到。

关于javascript - 使用javascript动态创建元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2590414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com