javascript - for 循环不显示正确的内容
问题描述
使用 for 循环时显示正确内容时出现问题。大声呼喊@Alireza Ahmadi 解决了我的问题。
我仍然想了解我的逻辑存在缺陷的地方。如果有人能指出我在哪里犯了错误,我将不胜感激。
我想使用 Tooltipster 插件在工具提示中显示不同的内容。Tooltipster 使用类来显示/更改工具提示。
我遇到的问题(AA 解决了)是每个工具提示都有相同的内容,即使我使用 for 循环遍历类的所有元素(animal
)。
假设我有以下 HTML:
<div class="textArea">
Vastly different animals such as <span class="animal">whale</span>
and <span class="animal">dog</span> do have some things in common.
</div>
<div id="runTT">Run Tooltipster</div>
Tooltipster 将寻找一个类(在这种情况下animal
)并更改它的内容。
我有一个 json/数组:
var animal = {
"category": {
"furry" : "Are they furry: ",
"legs" : "Does it have legs: ",
"mammal" : "Is it a mammal: "
},"animals":{
"dog" : {
"furry" : "Yes.",
"legs" : "Yes, 4.",
"mammal": "Yes."
},
"whale" : {
"furry" : "No.",
"legs" : "None.",
"mammal": "Yes."
}
}
}
这是 javascript + tooltipster 代码:
var animalsClass;
function getMarkedAnimals(){
animalsClass = document.getElementsByClassName("animal");
}
function TooltipsterStuff(){
$('.animal').tooltipster({
contentAsHTML: true,
functionReady: function(instance, helper) {
for(let i = 0; i < animalsClass.length; i++){
let pre0 = animal.category.furry;
let pre1 = animal.category.legs;
let pre2 = animal.category.mammal;
let fix;
let enter = "</br>";
if(animal.animals.hasOwnProperty(animalsClass[i].textContent)){
fix = animal.animals[animalsClass[i].textContent];
instance.content(
pre0 + fix.furry + enter +
pre1 + fix.legs + enter +
pre2 + fix.mammal
)
}
}
}
})
}
function doStuff(){
getMarkedAnimals();
TooltipsterStuff();
}
document.getElementById("runTT").addEventListener("click", doStuff);
所以,按照我的(有缺陷的)逻辑,循环运行了。Onlet i = 0
animalsClass[0]
的内容是“dog”,因此工具提示应更改为“Yes.”、“Yes, 4”。是的。
Oni = 1
animalsClass[1]
的内容是“whale”,所以工具提示应该更改为:“No.”、“No.”。是的。”。
它显然不起作用,所以请指出我犯了错误的地方。
谢谢你。
编辑:
所以问题是由于条件多次为真fix
而被覆盖。hasOwnProperty
此外,content
仅运行一次,因此始终只使用最新的值。
如果content
将多次使用/运行,则for
循环将起作用,但由于content
只运行一次,它只使用所有工具提示上的最新值。
编辑2:
因此,问题在于我使用一个类 ( animal
) 来显示具有不同内容的多个工具提示。for 循环不起作用,因为该值没有保存在任何地方,每次我们将鼠标悬停在 class 上时它都会查找它animal
。要在使用同一个类时显示不同的工具提示,我们需要指出tag
我们悬停在哪个上,这是用helper.origin
.
解决方案
发生这种情况是因为您处于循环中。是animalsClass[0]
的,dog
但你在循环中,然后你去animalsClass[1]
!
请注意,您需要检查您在鼠标上放置的标签,即helper.origin
.
animalsClass
hasdog
和whale
value 并且您在循环中检查它们并且它们都满足您的条件if(animal.animals.hasOwnProperty(animalsClass[i].textContent))
。
推荐阅读
- c# - 如何将循环文本框传递给 ASP.NET MVC 中的控制器变量
- python - 'Builtin_function_or_method' 对象不可下标。使用 NumPy 时出错
- visual-studio-code - Visual Studio Code - 从 NPM 脚本资源管理器中排除子目录
- angular - Angular http 请求在 Chrome 中正确返回 Observable 数组,但在 Internet Explorer 中为空数组
- python - 为什么 sklearn OneHotEncoder 不能与单个数据框列一起使用?
- c# - Microsoft Graph:无法更新事件的开始或结束日期
- c# - 字符不在水平轴上移动
- c# - C# .NET 图像未显示在本地资源中
- javascript - 使用 java 脚本代码在新页面重定向到用户
- nginx - 在 NGINX 上使用不同端口在单个服务器名称上运行两个应用程序