onmouseleave -- 将背景图像恢复为默认值
onmouseleave --returning background image to default
我正在尝试使用 onmouseleave 方法 return div 的背景图像恢复到默认值。这是 HTML 和 JS:
<script type="text/javascript">
function displayImage(event) {
event = event || window.event;
var targetElement = event.target || event.srcElement;
if (targetElement.tagName == "IMG") {
console.log(document.getElementById("viewer"));
document.getElementById("viewer").style.backgroundImage = 'url(' + targetElement.getAttribute("src") + ')';}
}
function leaveImage(event){
event = event || window.event;
var targetElement = event.target || event.srcElement;
if (targetElement.tagName != "IMG") {
document.getElementById("viewer").style.backgroundImage: URL();
}
}
其中 displayImage 和 leaveImage 是使用相同 HTML div 标记中的方法调用的:
<div class="thumbnails" onmouseover="displayImage(event)">
本质上,我想 return "viewer" id'd div 元素的背景图像在 mouseleave 上设为默认值(创建两个单独的函数)。我的做法正确吗?
谢谢大家!
我认为这一行应该有一个“=”而不是“:”:
document.getElementById("viewer").style.backgroundImage = URL();
也许这是唯一的问题....
好的,首先;它显示 [Object HTML Collection] 因为你正在调用 getElementsByTagName,请注意它说 Elements,所以你在你的网站上得到每个 p 标签,你想要的是只得到一个。解决方案可以是给p标签一个ID,然后使用getElementById,那么你只会得到单个元素。
其次,您需要将原始 p 标签文本保存在某处,这里是一个将其保存在变量中的示例:
HTML:
<p id="tip">Hover over the image to display larger</p>
Javascript:
var originalText; // Notice this is outside the functions
function displayImage(event) {
event = event || window.event;
var targetElement = event.target || event.srcElement;
originalText = document.getElementById("tip").innerHTML;
var altText=targetElement.getAttribute("alt");
document.getElementById("viewer").innerHTML = altText;
if (targetElement.tagName == "IMG") {
console.log(document.getElementById("viewer"));
document.getElementById("viewer").style.backgroundImage = 'url(' + targetElement.getAttribute("src") + ')';
}
}
function leaveImage(event){
event = event || window.event;
var targetElement = event.target || event.srcElement;
document.getElementById("viewer").innerHTML = originalText;
if (targetElement.tagName != "IMG") {
document.getElementById("viewer").style.backgroundImage= URL();
}
}
<script type="text/javascript">
function displayImage(event) {
event = event || window.event;
var targetElement = event.target || event.srcElement;
if (targetElement.tagName == "IMG") {
console.log(document.getElementById("viewer"));
document.getElementById("viewer").style.backgroundImage = 'url(' + targetElement.getAttribute("src") + ')';}
}
function leaveImage(event){
event = event || window.event;
var targetElement = event.target || event.srcElement;
if (targetElement.tagName != "IMG") {
document.getElementById("viewer").style.backgroundImage: URL();
}
}
其中 displayImage 和 leaveImage 是使用相同 HTML div 标记中的方法调用的:
<div class="thumbnails" onmouseover="displayImage(event)">
本质上,我想 return "viewer" id'd div 元素的背景图像在 mouseleave 上设为默认值(创建两个单独的函数)。我的做法正确吗?
谢谢大家!
我认为这一行应该有一个“=”而不是“:”:
document.getElementById("viewer").style.backgroundImage = URL();
也许这是唯一的问题....
好的,首先;它显示 [Object HTML Collection] 因为你正在调用 getElementsByTagName,请注意它说 Elements,所以你在你的网站上得到每个 p 标签,你想要的是只得到一个。解决方案可以是给p标签一个ID,然后使用getElementById,那么你只会得到单个元素。
其次,您需要将原始 p 标签文本保存在某处,这里是一个将其保存在变量中的示例:
HTML:
<p id="tip">Hover over the image to display larger</p>
Javascript:
var originalText; // Notice this is outside the functions
function displayImage(event) {
event = event || window.event;
var targetElement = event.target || event.srcElement;
originalText = document.getElementById("tip").innerHTML;
var altText=targetElement.getAttribute("alt");
document.getElementById("viewer").innerHTML = altText;
if (targetElement.tagName == "IMG") {
console.log(document.getElementById("viewer"));
document.getElementById("viewer").style.backgroundImage = 'url(' + targetElement.getAttribute("src") + ')';
}
}
function leaveImage(event){
event = event || window.event;
var targetElement = event.target || event.srcElement;
document.getElementById("viewer").innerHTML = originalText;
if (targetElement.tagName != "IMG") {
document.getElementById("viewer").style.backgroundImage= URL();
}
}