2 回答

TA貢獻1820條經驗 獲得超3個贊
使用insertAdacentHTML代替+=ing 到innerHTML容器的 。這樣,現有元素就不會被破壞:
let btn = document.getElementById('addBtn');
let container = document.getElementById('container');
btn.onclick = function() {
container.insertAdjacentHTML('beforeend', `<input type="number" max="10" min="1" value="1"><br>`);
};
<button id="addBtn">add element</button>
<div id="container"></div>
innerHTML在 HTML 中讀取時,更改容器的 將有效清除元素字符串中不存在的任何內容。因此, set.value不會被保留,事件偵聽器也不會。
insertAdjacentHTML,另一方面,不會重新解析任何現有的子項 -它只插入相鄰的 HTML,其他所有內容都單獨存在。
您還可以使用createElement和 附加來創建元素appendChild,但是當有很多屬性時,這有點冗長。

TA貢獻1777條經驗 獲得超3個贊
<button id="btn2">add</button>
<script>
$(document).ready(function(){
var add='<input type="text" value="hello" readonly />';
$('#btn2').click(function(){
$('p').append(add);
});
});
</script>
添加回答
舉報