Javascript 在for循环内将一行放在前景中

Javascript 在for循环内将一行放在前景中,javascript,processing.js,Javascript,Processing.js,我正在尝试从我创建的一系列书籍中创建一个书架,如果书籍的“推荐”属性为“false”,则在对角线上划出一本书。您可以在我的for循环中看到,我尝试使用以下if语句来实现这一点: if(books[i].recommended === false) { fill(0, 0, 0); line(bookX,bookY,bookX+90,bookY+100); } 然而,我的问题是,我在for循环中创建的行位于我的书籍后面的背景中,因此是不可见的。我怎样才能让它走到前台 完整代码如下

我正在尝试从我创建的一系列书籍中创建一个书架,如果书籍的“推荐”属性为“false”,则在对角线上划出一本书。您可以在我的
for
循环中看到,我尝试使用以下if语句来实现这一点:

if(books[i].recommended === false)
{
    fill(0, 0, 0);
    line(bookX,bookY,bookX+90,bookY+100);
}
然而,我的问题是,我在
for
循环中创建的行位于我的书籍后面的背景中,因此是不可见的。我怎样才能让它走到前台

完整代码如下:

//I create my array with my books
var books = [];

for(var y = 1;y<=20;y++)
{
    books.push(
        {
            title: "Book "+y,
            stars: random(4),
            author: "Author "+y,
            color: color(random(255), random(255), random(255)),
            recommended: !!Math.floor(Math.random() * 2)
        }
        );
}

// Loop to draw 3 shelves
var shelfY = 105;
while (shelfY<=360)
{
    fill(173, 117, 33);
    rect(0, shelfY, width, 10);
    shelfY +=120;
}

// Loop to draw all my books
var bookX = 5;
var bookY = 5;
for (var i = 0; i<books.length; i++)
{
    fill(books[i].color);
    rect(bookX, bookY, 90, 100);
    fill(0, 0, 0);
    text(books[i].title, bookX+5, bookY+9, 70, 100);
    text(books[i].author, bookX+5, bookY+24, 70, 100);

    for (var j = 0; j < books[i].stars; j++) 
    {
        image(getImage("cute/Star"), bookX+3 + j * 20, bookY+70,20, 30);
    }

    bookX += 100;

    if(bookX>400)
    {
        bookX = 5;
        bookY += 120;
    }

    if(books[i].recommended === false)
    {
        fill(0, 0, 0);
        line(bookX,bookY,bookX+90,bookY+100);
    }
}
//我用我的书创建数组
var账簿=[];

对于(var y=1;y您在增加bookX和bookY后绘制直线,因此不会在正确的位置绘制

试着把你的if(books[i].推荐的书等)放在bookX+=100之前,它就会起作用

这是最后的代码:

//我用我的书创建数组
var账簿=[];

对于(var y=1;y
fill
line
函数来自何处?使用
line
调用的任何函数都可能需要修改以接受z-index参数,这将允许您对元素堆栈进行排序。@skolsuper和@kaz这是,而
fill
line
函数是默认的他们的环境的一部分,因此我不能自己修改它们。有没有其他方法来解决我的问题(例如,在我的书上显示我的删除线)无需修改
功能?我快速查看了Khan Academy,很明显他们使用了一个处理端口。js,我对此不太了解,抱歉。我在你的帖子中添加了一个标签,这样做的人更有可能找到它。好运气,抱歉耽搁了。我刚刚接受了答案!再次感谢!