gpt4 book ai didi

javascript - 将innerHTML更改回其原始值,但使用JavaScript获取 "undefined"

转载 作者:行者123 更新时间:2023-11-28 16:55:42 25 4
gpt4 key购买 nike

100%陷入家庭作业......

我有一些简单的 JavaScript,目的是在鼠标悬停在某些图像上时更改 div 的背景图像和文本。然而,我现在尝试执行的是在鼠标移开时将 div 恢复到其原始状态。

我可以恢复 div 背景颜色

document.getElementById('image').style.backgroundImage = "";

本质上是杀死背景图像并强制其恢复为页面加载时的背景颜色。

现在我想做的是存储原始的innerHTML 文本“将鼠标悬停在下面的图像上以在此处显示。”作为变量

var originalText = document.getElementById('image').innerHTML;

然后在我需要的时候回调它。

  function unDo() {
document.getElementById('image').style.backgroundImage = "";
document.getElementById('image').innerHTML = originalText;

但是,

var originalText = document.getElementById('image').innerHTML;

返回“未定义”,这意味着我在存储变量时以某种方式搞砸了,对吗?我也尝试过innerText,但这似乎对我没有多大作用。下面是完整的 HTML 和 JavaScript。

/*Name this external file gallery.js*/
var originalText = document.getElementById('image').innerHTML;

function upDate(previewPic) {
document.getElementById('image').innerHTML = previewPic.alt;
document.getElementById('image').style.backgroundImage = "url('" + previewPic.src + "')";

/* In this function you should
1) change the url for the background image of the div with the id = "image"
to the source file of the preview image

2) Change the text of the div with the id = "image"
to the alt text of the preview image
*/

}

function unDo() {
document.getElementById('image').style.backgroundImage = "";
document.getElementById('image').innerHTML = originalText;



/* In this function you should
1) Update the url for the background image of the div with the id = "image"
back to the orginal-image. You can use the css code to see what that original URL was

2) Change the text of the div with the id = "image"
back to the original text. You can use the html code to see what that original text was
*/

}
body {
margin: 2%;
border: 1px solid black;
background-color: #b3b3b3;
}

#image {
line-height: 650px;
width: 575px;
height: 650px;
border: 5px solid black;
margin: 0 auto;
background-color: #8e68ff;
background-image: url('');
background-repeat: no-repeat;
color: #FFFFFF;
text-align: center;
background-size: 100%;
margin-bottom: 25px;
font-size: 150%;
}

.preview {
width: 10%;
margin-left: 17%;
border: 10px solid black;
}

img {
width: 95%;
}
<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8">
<title>Photo Gallery</title>
<link rel="stylesheet" href="css/gallery.css">
<script src="js/gallery.js"></script>
</head>
<body>

<div id="image">
Hover over an image below to display here.
</div>

<img class="preview" alt="Styling with a Bandana" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon.jpg" onmouseover="upDate(this)" onmouseout="unDo()">

<img class="preview" alt="With My Boy" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon2.JPG" onmouseover="upDate(this)" onmouseout="unDo()">

<img class="preview" src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/389177/bacon3.jpg" alt="Young Puppy" onmouseover="upDate(this)" onmouseout="unDo()">

</body>
</html>

注意:我无权更改此作业的 HTML。只有 JavaScript。你不必为我做作业。不过,如果能给出正确方向的提示就好了。

screenshotoflocalenvironment

最佳答案

似乎可能会发生这种情况,因为 html 中的脚本标记位于正文上方。

当您在脚本开头声明“原始文本”变量时,页面尚未加载,因此它返回未定义,因为它无法在文档中找到具有“图像”类的任何内容.

有时加载速度可能足够快,有时则不然

相反,将 html 中的 script 标记移至 body 标记的正下方。因此脚本在正文加载后加载。应该修复它。

**额外提示。

将元素(即“图像”)存储在变量中,而不是多次调用 getElementbyId。每次执行此操作时,javaScript 都会搜索整个 DOM,这在较大的应用程序中是资源密集型的,并且可能会变得相当慢。只是我的一个小烦恼。

关于javascript - 将innerHTML更改回其原始值,但使用JavaScript获取 "undefined",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59273404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com