【发布时间】:2021-03-29 14:06:30
【问题描述】:
希望你一切都好。
我有一个学校作业,我希望能够动态更改“项目”的名称。这个作业是关于项目的。我现在所做的方式适用于使用百里香迭代的“项目”列表中的第一个“项目”。我知道我现在所做的绝对是糟糕的代码行为,但是我们还没有教过 JS。但我真的很想要这个功能。 我不知道如何使每个项目预览都起作用,现在它适用于第一个预览,但对于其余部分,它只是从数据库中删除项目名称。 (见图)
<div class="projects" th:each="projectNames : ${listOfProjects}">
<form action="deleteProjectPost" method="post">
<input type="hidden" th:value="${projectNames.projectID}" name="deleteID">
<input type="image" src="delete.png" alt="Submit" align="right" class="deleteProject" onclick="return confirm('Are you sure that you want to delete this project?')">
</form>
<form action="/editProjName" method="post">
<input type="hidden" name="projectID" th:value="${projectNames.projectID}">
<input type="hidden" id="oldName" th:value="${projectNames.projectName}">
<input type="hidden" id="newName" name="projectName">
<input type="image" src="edit.png" alt="Submit" onclick="change_text()" align="right" class="editProject">
</form>
<form action="/projectPost" method="post">
<input class="projectInfo" name="projectID" type="text" th:value="'Project No.: ' + ${projectNames.projectID}" readonly="readonly">
<input class="projectInfo" type="text" th:value="'Project name: ' + ${projectNames.projectName}" readonly="readonly">
<input class="projectInfo" type="text" th:value="${projectNames.projectStartDate} + ' - ' + ${projectNames.projectEndDate}" readonly="readonly">
<input type="submit" value="OPEN" class="openProject">
</form>
</div>
<script>
function change_text() {
var changedText;
var projectName = prompt("Please enter name of project:");
var oldName = document.getElementById("oldName").value;
if (projectName === null || projectName === "") {
changedText = oldName;
} else {
changedText = projectName;
}
document.getElementById("newName").value = changedText;
}
</script>
HTML 中的第一个表单是删除整个“项目”的红十字。第二种形式旨在更改“项目预览”上显示的名称,但仅适用于第一次预览并从其余部分中删除项目名称。最后一种形式是实际的预览。在使用 Java Spring 和 Thymeleaf 时,我找不到另一种方法来拥有多个表单并执行不同的 POSTS。
我的愿望是让 change_text() 函数适用于每个“项目预览”
最好的问候!
【问题讨论】:
-
根本问题是您重复 ID。 ID 应该在单个页面中是唯一的。
document.getElementById(...)将始终只返回上下文中的第一个匹配项,即整个document -
啊,我明白了。这绝对是非常有意义的。是否可以通过名称或类似名称获得?如果你知道,当然
-
如果切换到
querySelector(<selector>)或querySelectorAll(<selector>),则可以使用选择器字符串。其中,您可以通过'.class'或'#id'或'[attribute="value"]'(例如'[name="whatever"]')查找内容,以列举一些基础知识 -
哦,感谢您的意见。我相信我的非教 JS 知识不会在这里帮助我。是否可以将我现在拥有的
标签: javascript spring spring-boot thymeleaf