【发布时间】:2010-10-03 16:10:10
【问题描述】:
我已经在 javascript 中启动了这个,所以我不想使用 jquery,但是一些 javascript 专家可以查看我的代码并告诉我我在做什么错或对吗?让我告诉你我想在这里完成什么。我有一个由四个按钮组成的菜单,当您将鼠标悬停在它们上时,它们会改变颜色,然后当您将鼠标悬停在标题上时,会在标题图像下方显示,按钮应返回其原始颜色,然后在标题下方出现另一个包含一些文本的图像。在大多数情况下,代码工作正常,除了在 Firefox 中,有时标题会四处移动,我假设这是因为当可见时文本图像不存在,所以标题落在文本所在的位置,我没有IE中的这个问题。最大的问题是onmouseout。我不希望原始按钮立即返回颜色,因为我需要时间才能滚动标题以显示文本,所以我试图使用 setTimeout 函数暂停几秒钟,但它没用。
代码如下:
window.onload = rollover;
function rollover()
var images = document.getElementsByTagName("img"); // Get all the images in the document
var roll = new RegExp("roll");
var preload = [];
var fileLoc = "images/rollovers/";
for ( var i=0; i<images.length; i++)
{
if (images[i].id.match(roll)) // Loop through all the images in document and look for match on 'roll'
{
preload[i] = new Image();
preload[i].src = fileLoc + images[i].id + "_over.gif"; // Preload the _overs into an array.
images[i].onmouseover = function() // Add a mouseover event to image
{
this.src = fileLoc + this.id + "_over.gif"; // When rolled over, this file now equals the _over image
var currentButton = this.id; // Grab the id of the current image
var imageHeader = document.getElementById("current_title"); //Grab all images that are titled 'current_title'
var newHeaderImage = new Image();
newHeaderImage.src = fileLoc + currentButton + "_header.gif"; // Create new image and store _Header image inside
newHeaderImage.id = currentButton + "_header"; //New id for new image is file + headerId
imageHeader.src = newHeaderImage.src;
imageHeader.height = newHeaderImage.height; // Assign header image id to currect location
imageHeader.width = newHeaderImage.width;
imageHeader.style.visibility = "visible";
imageHeader.onmouseover = function() // Attach mouse event for header image
{
var imageText = document.getElementById("button_text");
var newTextImage = new Image();
newTextImage.src = fileLoc + currentButton + "_text.gif";
imageText.src = newTextImage.src;
imageText.height = newTextImage.height;
imageText.width = newTextImage.width;
imageText.style.visibility = "visible";
}
}
//images[i].onmouseout = setTimeout(mouseOut(fileLoc, this.id),3000);
}
}
}
/*function mouseOut(fileLoc, curButton)
{
var titleImg = document.getElementById("current_title");
var imgButton = curButton;
this.src = fileLoc + imgButton + "_org.gif";
titleImg.style.visibility = "hidden";
}*/
【问题讨论】:
-
不是您想要的答案(因此是评论),而是停止。备份。下载一个 JS 库(如 jQuery),然后重新启动。您的生活会更轻松,您将有时间与家人/朋友共度时光,并且每当您必须在这里提出更多问题时,您的脾气就会变得不那么暴躁(而且会不那么频繁:-)。
-
谁需要家人和朋友。
-
我同意。很明显,您正处于使用库或编写自己的库的门槛上。去获取 jQuery,然后按照你认为适合你的项目的方式使用它,从这里开始。这是更快乐的日子!
-
谁能告诉我如何做多次翻转的事情 jquery 因为我不想使用它的唯一原因是因为我不知道如何并且我认为这需要更多时间来学习然后完成我已经写的内容
-
@John,我会专门针对如何在 jQuery(或另一个 JS lib)中执行此操作提出另一个问题,其标题更贴切,例如“如何在 jQuery 中获得翻转内的翻转?” .然后解释你想要做什么(就像这个问题一样)。我敢打赌,你会得到更多答案。
标签: javascript rollovers