javascript - 尝试在另一个带有 Id 的特定“h1”之前插入“h1”
问题描述
我需要帮助的特定代码行已标记,但我已将整个函数包含在上下文中。指定代码行的预期输出应该如下:我想在元素newNode
之前插入元素"#" + nextRank + "A"
(nextRank
定义为大写字母,原样rank
)。我相信我的代码中的错误来自nextRank
特定行的语法,但我可能是错的。有谁知道我该如何解决这个问题?
//rank is a capital letter (EX: "A")
//nodeField is a div which only parents h1's.
function addNode(rank) {
var alphabet = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
var nextRank = alphabet[alphabet.indexOf(rank) + 1];
if ($('#nodeField>h1[id^="${rank}"]').length) {
var aI = alphabet.indexOf($('#nodeField>h1[id^="${rank}"]:last-child')[$('#nodeField>h1[id^="${rank}"]:last-child').length - 1]) + 1;
} else {
var aI = 0;
}
var newNode = document.createElement("h1");
newNode.innerHTML = 0;
newNode.id = rank + alphabet[aI];
if ($(`#nodeField>h1[id^="${nextRank}"]`).length > 0) {
//I need help with correcting the statement below!
document.getElementById("nodeField").insertBefore(newNode, $("#" + nextRank + "A"));
} else {
document.getElementById("nodeField").appendChild(newNode);
}
}
解决方案
你混合了 jQuery 和纯 JS 元素。有两种方法可以在之前插入新元素。
使用纯 JS:
var newNode = document.createElement("h1");
newNode.innerHTML = 0;
newNode.id = "rankId";
document.getElementById("myDiv").insertBefore(newNode, document.getElementById("myInnerDiv"));
<div id="myDiv">
<div> </div>
<div id="myInnerDiv">inner div</div>
<div> </div>
</div>
在你的情况下:
document.getElementById("nodeField").insertBefore(newNode, document.getElementById(nextRank + "A"));
使用 jQuery:
var newNode = document.createElement("h1");
newNode.innerHTML = 0;
newNode.id = "rankId";
$(newNode).insertBefore($("#myInnerDiv"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="myDiv">
<div> </div>
<div id="myInnerDiv">inner div</div>
<div> </div>
</div>
在你的情况下:
$(newNode).insertBefore($("#" + nextRank + "A"))
推荐阅读
- java - Spring Boot是否可以使用接口作为控制器参数并让spring使用它的实现来实例化它?
- android - Android 相机 X 视口
- java - 如何从语法规则构建 AST 树
- c++ - 使用带有循环和延迟的 ESP_NOW
- ruby-on-rails - 如何在 ruby on rails 中用 n/a 替换空值?
- java - Junit 5 mockito 无法在 Spring Boot 应用程序中读取用 @Value 注释的属性文件
- javascript - 如何将Angular函数返回值存储到变量中
- spring - Spring Boot 中 EJB SessionContext 对象的替换是什么?
- angular - 手动刷新服务器中未找到的页面时
- mongodb - 如何在 azure Databricks 的帮助下有效地将 MongoDB 迁移到 azure CosmosDB?