Javascript循环不';我不能在流星中工作

Javascript循环不';我不能在流星中工作,javascript,jquery,Javascript,Jquery,这应该行得通,但行不通。我做错了什么?我想输出“选定”到我在流星页面上的标签 Template.editor.onRendered( function() { var cats = ["Comedy","Action","Self Help"]; var arrayLength = cats.length; for (var i = 0; i < arrayLength; i++) { if(cats[i].indexOf(getDocument.category) != -1){

这应该行得通,但行不通。我做错了什么?我想输出“选定”到我在流星页面上的标签

Template.editor.onRendered( function() {
var cats = ["Comedy","Action","Self Help"];
var arrayLength = cats.length;
for (var i = 0; i < arrayLength; i++) {
    if(cats[i].indexOf(getDocument.category) != -1){
        //found
        var id = cats[i].trim().toLowerCase();
        $("body").find("#"+id).attr("selected=selected");
        console.log(id);
    } else {
        console.log(getDocument.category)
    }
}
}
也许会改变

$("body").find("#"+id).attr("selected=selected");

编辑:

我想你走错方向了 请尝试以下方法:

if(getDocument.category.indexOf(cats[i]) != -1){

您需要更改一行以设置选定属性

$("body").find("#"+id).attr("selected","selected");
或者尝试以下操作:

$(document).find("#"+id).attr("selected","selected");

如果我没有错误地理解您的要求,那么您正在尝试查找getDocument.category中存在的“cats”数组的元素。如果是这样,上述方法是错误的。请看这一行:

if(cats[i].indexOf(getDocument.category) != -1){...}
如果选中此
的结果将始终返回-1,说明如下:

cats[i]
将返回cats的元素(带有索引i),因此如果i=0,结果将是“喜剧”。然后,
indexOf
将在其上执行,
喜剧.indexOf()
, 查找getDocument.category(数组)的位置

这意味着您要在字符串中查找数组?那是行不通的

实际上,我们可以使用includes方法检查数组中是否存在元素。因此,完整的代码可能如下所示:

Template.editor.onRendered(function() {
    var cats = ["Comedy", "Action", "Self Help"];
    var arrayLength = cats.length;
    for (var i = 0; i < arrayLength; i++) {
        if (getDocument.category.includes(cats[0])) {
            //found
            var id = cats[i].trim().toLowerCase();
            $("body").find("#" + id).attr("selected=selected");
            console.log(id);
        } else {
            console.log(getDocument.category)
        }
    }
})
Template.editor.onRendered(函数(){
var cats=[“喜剧”、“动作”、“自助”];
var arrayLength=猫的长度;
对于(变量i=0;i

希望这会有所帮助,谢谢

您的主机中有什么内容?另外,在
cats[i]
上调用
.trim()
有什么意义呢?既然您的数组不包含任何恶意空格,为什么不将cats存储为小写值,那么您也不必调用
.toLowerCase()
呢?仍然不起作用,但感谢您指出这一点。这是另一个错误,我刚刚意识到这一点,然后我看到了你的评论。谢谢你,虽然我不能把它作为一个答案,因为缺乏报告仍然不起作用,但谢谢你指出这一点。那是另一个错误
$(document).find("#"+id).attr("selected","selected");
if(cats[i].indexOf(getDocument.category) != -1){...}
Template.editor.onRendered(function() {
    var cats = ["Comedy", "Action", "Self Help"];
    var arrayLength = cats.length;
    for (var i = 0; i < arrayLength; i++) {
        if (getDocument.category.includes(cats[0])) {
            //found
            var id = cats[i].trim().toLowerCase();
            $("body").find("#" + id).attr("selected=selected");
            console.log(id);
        } else {
            console.log(getDocument.category)
        }
    }
})