如何从位于同一文件中的JS脚本更新EJS中的变量



如标题所述,我在ejs部分的scriplet标签中有这个变量"I":

<span class="UTXOindex"><% var i = 0 %></span>
<div class="test"></div>

我在同一文件的JS脚本部分中有以下内容,希望能够增加上述变量:

<script>
document.getElementById("nextButton").addEventListener("click", e => {
e.preventDefault()
document.querySelector(".test").insertAdjacentHTML(
"afterbegin",
`
<p>The number was <%= i %></p>
<% i++ %>
<p>The number is now <%= i %></p>
`
)
})
</script>

我正试图从JS脚本部分更新ejs部分中的变量"I",但在多次触发事件侦听器后,它似乎没有更新。触发.addEventListener几次如下所示:

The number was 0
The number is now 1
The number was 0
The number is now 1
The number was 0
The number is now 1

我希望得到以下输出:

The number was 0
The number is now 1
The number was 1
The number is now 2
The number was 2
The number is now 3

等等。。。

有什么建议吗?以及如何永久更新EJS scriplet标签中的变量?

您可以使用HTML数据属性。

document.getElementById("nextButton").addEventListener("click", e => {
e.preventDefault()
var i = Number(document.getElementById("increment").getAttribute("data-increment")) 
document.querySelector(".test").insertAdjacentHTML(
"afterbegin",
`
<p>The number was ${i}</p>
<p>The number is now ${i+1}</p>
`
)
document.getElementById("increment").setAttribute("data-increment", i+1);
})
<button id="nextButton">Click</button>
<span class="UTXOindex" data-increment="0" id="increment"></span>
<div class="test"></div>

您也可以这样分配值:

<span class="UTXOindex" data-increment="<%= anyValue %>" id="increment"></span>

最新更新