通过 prepend() 方法使用 Javascript 模板文字
Using Javascript Template Literals With The prepend() Method
我有一个按钮元素循环,通过 PHP.
从 MySQL 数据库调用的数据以 while
循环输出
用户可以向该列表添加一个按钮,我想添加新按钮,并且它在父元素上使用 prepend()
方法与 HTML 关联,因此它出现在列表。
我知道如何在各个阶段使用 createElement 并添加 class 名称和属性名称来执行此操作,但想知道是否有更简单的方法使用所需 [=38= 的模板文字来执行此操作]?
我见过很多使用 parentElement.innerHTML(variableName) 的示例,其中 variableName 是模板文字,但下面说明的这些按钮元素在一个循环中,并且希望我将新创建的按钮添加到HTML.
中显示的父 .board-list
元素
当提交新的板名时,后台会发生 fetch() post 请求以更新数据库,但我需要使用 JavaScript 创建一个新元素,以便立即显示给用户。
目前,模板文字 newButton
作为文本字符串添加到引号内的 HTML 中,而不是作为 HTML DOM 元素。
JavaScript
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value;
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
document.querySelector(".board-list").prepend(newButton);
HTML
<div class="board-list">
// buttons outputted from the database appear here
</div>
<form>
<input class="input-title">
<button name="new-board-name">New Board Name</button>
<form>
这个问题的解决方案是使用 insertAdjacentHTML
方法。其中一条评论中给出的 question/answer 在这方面对我有所帮助,但我不认为这是一个重复的问题,并且链接到的问题的答案过于复杂恕我直言。
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
// insert using 'afterbegin' to add as the first child element
document.querySelector(".board-list").insertAdjacentHTML('afterbegin', newButton)
我认为一个简单的解决方案是使用 .innerHTML
,这里是一个例子:
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value;
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
let boardList = document.querySelector(".board-list");
boardList.innerHTML = newButton + boardList.innerHTML;
<div class="board-list">
// buttons outputted from the database appear here
</div>
<form>
<input class="input-title" value="user1">
<button name="new-board-name">New Board Name</button>
<form>
这只是回答你的问题,虽然它不是最好的解决方案,所以我不推荐它。
我有一个按钮元素循环,通过 PHP.
从 MySQL 数据库调用的数据以while
循环输出
用户可以向该列表添加一个按钮,我想添加新按钮,并且它在父元素上使用 prepend()
方法与 HTML 关联,因此它出现在列表。
我知道如何在各个阶段使用 createElement 并添加 class 名称和属性名称来执行此操作,但想知道是否有更简单的方法使用所需 [=38= 的模板文字来执行此操作]?
我见过很多使用 parentElement.innerHTML(variableName) 的示例,其中 variableName 是模板文字,但下面说明的这些按钮元素在一个循环中,并且希望我将新创建的按钮添加到HTML.
中显示的父.board-list
元素
当提交新的板名时,后台会发生 fetch() post 请求以更新数据库,但我需要使用 JavaScript 创建一个新元素,以便立即显示给用户。
目前,模板文字 newButton
作为文本字符串添加到引号内的 HTML 中,而不是作为 HTML DOM 元素。
JavaScript
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value;
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
document.querySelector(".board-list").prepend(newButton);
HTML
<div class="board-list">
// buttons outputted from the database appear here
</div>
<form>
<input class="input-title">
<button name="new-board-name">New Board Name</button>
<form>
这个问题的解决方案是使用 insertAdjacentHTML
方法。其中一条评论中给出的 question/answer 在这方面对我有所帮助,但我不认为这是一个重复的问题,并且链接到的问题的答案过于复杂恕我直言。
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
// insert using 'afterbegin' to add as the first child element
document.querySelector(".board-list").insertAdjacentHTML('afterbegin', newButton)
我认为一个简单的解决方案是使用 .innerHTML
,这里是一个例子:
// added into the template literal below
const newBoardName = document.querySelector('.input-title').value;
const newButton = `
<button class="board-list-item full-width" name="board-name" type="submit">
<span>${newBoardName}</span>
<span class="add-icon flex">+</span>
</button>
`
let boardList = document.querySelector(".board-list");
boardList.innerHTML = newButton + boardList.innerHTML;
<div class="board-list">
// buttons outputted from the database appear here
</div>
<form>
<input class="input-title" value="user1">
<button name="new-board-name">New Board Name</button>
<form>
这只是回答你的问题,虽然它不是最好的解决方案,所以我不推荐它。