我想实现这个已经有效的“if-solution-result”:
window.onload = function(){
if(document.body.innerHTML.toString().indexOf('jeff') > -1){
alert('marker1 gefunden');
}
if(document.body.innerHTML.toString().indexOf('lisa') > -1){
alert('marker2 gefunden');
}
// it could go on and on from here...
};
以更优雅的方式使用“for ...”循环,但我没有让它工作。
var marker = ["paul", "maria", "jeff", "lisa"];
for (var i=0; i<marker.length; i++){
if(document.body.innerHTML(marker) > -1){
alert((marker) + 'gefunden');
}
}
我坚持如何管理循环内的信息。
最终应该做什么(正如我的“if”编码所示):
加载HTML&gt;&gt;检查是否找到一个或多个阵列&gt;&gt;用找到的内容打开一个警告框。
答案 0 :(得分:1)
您忘记在for循环中使用迭代器。和indexOf。
当你像这样使用for循环时,你有i
这就是迭代器,看你的索引是什么。然后,您可以使用i
通过marker[i]
从数组中选择正确的值。
示例:
var marker = ["paul", "maria", "jeff", "lisa"];
for (var i=0; i<marker.length; i++){
if(document.body.innerHTML.indexOf(marker[i]) > -1){ // <-- right there
alert((marker[i]) + 'gefunden');
}
}
答案 1 :(得分:1)
这里有两个问题,
textContent
代替innerHTML
,因为innerHTML
也会检查属性值等。forEach
迭代数组,includes
或indexOf
检查值是否在body
,例如
var bodyText = document.body.textContent; //save the textContent in a value beforehand rather than doing it in a loop.
var marker = ["paul", "maria", "jeff", "lisa"];
marker.forEach( (s, i) => bodyText.includes(s) && alert('marker' + i + ' gefunden') );
如果您的浏览器不支持箭头功能或includes
,那么
marker.forEach( function(s, i) { //s is the item in iteration from the array and i is the index
//check if the body has the text and && will make sure that second expression will get executed only if first one has succeeded
bodyText.indexOf(s) != -1 && alert('marker' + i + ' gefunden');
});
答案 2 :(得分:0)
作为最佳做法,我建议:
1,没有var,没有for循环,没有双引号,玩箭头功能
2,您应首先将document.body.innerHTML
分配给变量:
let html = document.body.innerHTML;
(请注意,您可能需要剥离HTML标记以获得更好的结果)。
3,检查marker
let marker = ['paul', 'maria', 'jeff', 'lisa'];
marker.filter((keyword) => {
return html.indexOf(keyword) > -1;
}).forEach((keyword) => {
alert(keyword);
});