Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:每次滚动不同的文本时,我都要更改div中的图像_Javascript_Html - Fatal编程技术网

Javascript:每次滚动不同的文本时,我都要更改div中的图像

Javascript:每次滚动不同的文本时,我都要更改div中的图像,javascript,html,Javascript,Html,为这个可能含糊不清的问题道歉 我正在尝试制作一个乐队列表,在滚动[乐队名称]时,这些乐队将改变特定于该乐队的图像。我试图把它作为一个switch语句来做,但是我不能让它工作?我对JavaScript相当陌生,因此非常感谢您的帮助。以下是我到目前为止的情况: 功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='images/band_test1.png' 打破 案例2: document.getElementById'bandI

为这个可能含糊不清的问题道歉

我正在尝试制作一个乐队列表,在滚动[乐队名称]时,这些乐队将改变特定于该乐队的图像。我试图把它作为一个switch语句来做,但是我不能让它工作?我对JavaScript相当陌生,因此非常感谢您的帮助。以下是我到目前为止的情况:

功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='images/band_test1.png' 打破 案例2: document.getElementById'bandImage'.src='images/band_test2.png' 打破 违约: document.getElementById'bandImage'.src='images/band_test.png' } } .乐队{ 文字装饰:无; 颜色:白色; } .乐队:悬停{ 颜色:E05A6D; } 排队 波段描述
您需要在鼠标上方添加引号,以便为开关传递字符串,而不是数字1或2,这样才能正确切换。我把乐队的名字改成黑色,这样你就可以看到它改变了悬停画面

功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='images/band_test1.png' 打破 案例2: document.getElementById'bandImage'.src='images/band_test2.png' 打破 违约: document.getElementById'bandImage'.src='images/band_test.png' } } .乐队{ 文字装饰:无; 颜色:黑色; } .乐队:悬停{ 颜色:E05A6D; } 排队 波段描述
您需要在鼠标上方添加引号,以便为开关传递字符串,而不是数字1或2,这样才能正确切换。我把乐队的名字改成黑色,这样你就可以看到它改变了悬停画面

功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='images/band_test1.png' 打破 案例2: document.getElementById'bandImage'.src='images/band_test2.png' 打破 违约: document.getElementById'bandImage'.src='images/band_test.png' } } .乐队{ 文字装饰:无; 颜色:黑色; } .乐队:悬停{ 颜色:E05A6D; } 排队 波段描述
这是因为您将数字传递到函数中,但会切换到字符串。让他们都是数字或字符串,它将在下面工作我已经交换了数字开关

功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=1'; 打破 案例2: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=2'; 打破 违约: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=3'; 打破 } } .乐队{ 文字装饰:无; 颜色:白色; } .乐队:悬停{ 颜色:E05A6D; } 排队 波段描述
这是因为您将数字传递到函数中,但会切换到字符串。让他们都是数字或字符串,它将在下面工作我已经交换了数字开关

功能带鼠标选线{ 开关选择{ 案例1: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=1'; 打破 案例2: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=2'; 打破 违约: document.getElementById'bandImage'.src='10〕http://via.placeholder.com/150x150?text=3'; 打破 } } .乐队{ 文字装饰:无; 颜色:白色; } .乐队:悬停{ 颜色:E05A6D; } 排队 波段描述
我想提供一个更容易管理的替代解决方案,您可以看到

不使用switch语句,您可以将图像存储在允许您存储自定义数据属性的实际数据库上。您的用例是将图像存储为自定义数据属性

接下来,您可以直接从Javascript查询元素,而不是直接在元素上添加事件处理程序。您的所有元素都有共同的band类名,因此我们可以使用document.getElementsByClassName'band'。现在又回来了。不能使用语句直接迭代HTMLCollection,因为它不是数组类型。但是,可以使用将集合转换为数组

当您迭代元素时,您可以将列表器添加到元素中。在我的中,我添加了你的鼠标悬停侦听器并设置了背景。但我怀疑,当用户鼠标离开时,您可能会想要删除该图像,因此我也添加了该选项

以下是与上述段落直接相关的代码。其余的在t 他是杰宾

选择所有band const bands=document.getElementsByClassName'band'; 将HTMLCollection转换为数组。frombands 迭代所有波段数组。frombands.forEach 将mouseover和mouseout元素添加到每个标注栏项

b、 addEventListener'mouseover',e=>{ b、 style.backgroundImage='url'+b.dataset.img+; }; b、 addEventListener'mouseout',e=>{ b、 style.backgroundImage=null; };


我想提供一个更容易管理的替代解决方案,您可以看到

不使用switch语句,您可以将图像存储在允许您存储自定义数据属性的实际数据库上。您的用例是将图像存储为自定义数据属性

接下来,您可以直接从Javascript查询元素,而不是直接在元素上添加事件处理程序。您的所有元素都有共同的band类名,因此我们可以使用document.getElementsByClassName'band'。现在又回来了。不能使用语句直接迭代HTMLCollection,因为它不是数组类型。但是,可以使用将集合转换为数组

当您迭代元素时,您可以将列表器添加到元素中。在我的中,我添加了你的鼠标悬停侦听器并设置了背景。但我怀疑,当用户鼠标离开时,您可能会想要删除该图像,因此我也添加了该选项

以下是与上述段落直接相关的代码。其余的在JSBin中

function initializeBandRollovers() {
  const bands = document.getElementsByClassName('band');
  Array.from(bands).forEach((b) => {
    b.addEventListener('mouseover', (e) => {
      b.style.backgroundImage = 'url(' + b.dataset.img + ')';
    });
    b.addEventListener('mouseout', (e) => {
      b.style.backgroundImage = null;
    });
  })
}
initializeBandRollovers();
选择所有band const bands=document.getElementsByClassName'band'; 将HTMLCollection转换为数组。frombands 迭代所有波段数组。frombands.forEach 将mouseover和mouseout元素添加到每个标注栏项

b、 addEventListener'mouseover',e=>{ b、 style.backgroundImage='url'+b.dataset.img+; }; b、 addEventListener'mouseout',e=>{ b、 style.backgroundImage=null; };


是切换数字更好还是只传递一个字符串好?或者,取决于你真的,我只是喜欢数字,因为它可以节省写引号的时间。每个地方切换数字更好还是只传递一个字符串好?或者,取决于你真的,我只是喜欢数字,因为它可以节省写引号的时间