【发布时间】:2022-09-25 18:37:04
【问题描述】:
我是 Svelte 和 Web 开发的新手,我希望你能指出我正确的方向。
当前代码属于一个苗条的组件。 如图所示:https://svelte.dev/repl/f0e5c30117724ec38b7d19781d2c4de6?version=3.48.0
它应该默认显示一个文本字段,同时允许在动态添加的按钮上添加和删除一个附加文本字段。 目前,此代码可以动态添加文本字段,但是不能在单击按钮时动态删除文本字段。
我相信 GetDynamicElement 函数可能有错误。但是,我不确定具体在哪里。有什么建议么?
p.s.我知道这里的答案很接近,但我认为它们不适用于这种情况,尤其是在 Svelte 上。
<script>
var num_links = 1;
let container;
const GetDynamicElement = (value) => {
return (
\'<input name = \"DynamicField\" type=\"text\" size =111 id =link placeholder=\"Enter Next link! \" value = \"\' +
value +
\'\" />\' +
\'<input type=\"button\" value=\"Remove\" on:click = {RemoveField(this)}>\'
// \"RemoveSuggestionCart(this)\" />\'
);
};
const addField = () => {
if (num_links < 2) {
console.log(\"addField\");
const div = document.createElement(\"DIV\");
div.innerHTML = GetDynamicElement(\"\");
container.appendChild(div); // Append timetable space
num_links += 1;
}
};
//Removes the entire division inclusive of it\'s text field.
const RemoveField = (div) => {
console.log(\"RemoveField\");
div.removeChild(div.parentNode);
num_links -= 1;
};
</script>
<div>
<input
name=\"DynamicField\"
type=\"text\"
size=\"121\"
id=\"link\"
placeholder=\"Enter First Link!\"
/>
<div bind:this={container} />
</div>
<button on:click|preventDefault={addField}>[+ add timetable link]</button>
<style>
</style>
-
你能提供一个游乐场链接吗?
-
您绝对不应该从 JS 中的字符串构建 HTML。 Svelte 的存在就是为了防止这种情况以及随之而来的安全问题。
标签: javascript html input textfield svelte