Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.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/0/performance/5.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 更换滚动条上的img src_Javascript_Jquery - Fatal编程技术网

Javascript 更换滚动条上的img src

Javascript 更换滚动条上的img src,javascript,jquery,Javascript,Jquery,我试图替换logo text blacksrc属性,以便svg img随着用户滚动而改变。是否可以将此添加到我当前的脚本中 img/logo text white.svg//顶级状态 img/logo text black.svg//滚动状态 HTML <nav class="navbar navbar-default navbar-fixed-top"> <div class="navbar-header"> <a href="#top"><i

我试图替换logo text blacksrc属性,以便svg img随着用户滚动而改变。是否可以将此添加到我当前的脚本中

img/logo text white.svg//顶级状态

img/logo text black.svg//滚动状态

HTML

<nav class="navbar navbar-default navbar-fixed-top">
  <div class="navbar-header">
  <a href="#top"><img class="logo" src="img/logo.svg"></a>
   <a href="#top"><img class="logo-text" src="img/logo-text-white.svg">
 </a>
 </div>
</nav>

要替换图像源,可以使用jQuery
.attr
方法:

var initialSrc = "img/logo.svg";
var scrollSrc = "img/logo-text-black.svg";

$(window).scroll(function() {
   var value = $(this).scrollTop();
   if (value > 100)
      $(".logo").attr("src", scrollSrc);
   else
      $(".logo").attr("src", initialSrc);
});
这种方法只需要一个HTML中带有
logo
类的


要替换图像源,可以使用jQuery
.attr
方法:

var initialSrc = "img/logo.svg";
var scrollSrc = "img/logo-text-black.svg";

$(window).scroll(function() {
   var value = $(this).scrollTop();
   if (value > 100)
      $(".logo").attr("src", scrollSrc);
   else
      $(".logo").attr("src", initialSrc);
});
这种方法只需要一个HTML中带有
logo
类的


忽略一个事实,即问题的简单答案是在使用jQuery时使用
.attr
函数更改元素的属性,这就是我将如何完成问题中提出的任务

首先,我将把所有这些放在一个函数中(主要是将变量和逻辑与其他页面脚本分离,以防止干扰)

我的下一个建议是在两个或多个CSS类中实现背景颜色更改。这样做的好处是简化了JavaScript,并将样式部分保留在样式区域中

接下来,我喜欢为我的“神奇单词”创建常量变量,这样,如果我以后更改使用的单词,我只需在代码中更改一次单词,而不是在使用单词的任何地方

<nav class="navbar navbar-default navbar-fixed-top">
  <div class="navbar-header">
    <a href="#top"><img class="logo" src="img/logo.svg"></a>
 </div>
</nav>
我会将图像源放入一个对象中,其中的键是与这些源相关联的神奇单词。这允许以后快速方便地查找

// cache the magic words
const DARK  = 'dark';
const LIGHT = 'light';
之后,我会预加载图像,以防止在第一次更改源时出现视觉延迟

// define our different sources for easy access later
const sources = {
  light: "http://via.placeholder.com/150x50/fff/000?text=logo",
  dark:  "http://via.placeholder.com/150x50/000/fff?text=logo"
};
之后,只需分配事件侦听器

这里是全部:

功能导航开关(el){
//缓存对logo元素的引用以供以后使用
const logo=el.querySelector('.logo');
//缓存这些神奇的文字
常数暗=‘暗’;
常量灯光=‘灯光’
//定义我们的状态变量
让滚动=假;
让主题=光;
//定义我们的不同来源,以便以后轻松访问
常数源={
光:“http://via.placeholder.com/150x50/fff/000?text=logo",
黑暗:“http://via.placeholder.com/150x50/000/fff?text=logo"
};
//预加载图像以防止jank
document.body.insertAdjacentHTML('beforeed'`
`);
//定义我们的滚动处理程序
常量滚动\u处理程序=\u=>setTimeout(\u=>{
//如果我们已经在处理一个滚动事件,我们不想处理这个事件。
如果(滚动)返回;
滚动=真;
//根据滚动位置确定应显示的主题
const new_theme=document.documentElement.scrollTop>100?暗:亮;
//如果当前主题是应显示的主题,请取消执行
如果(新主题===主题){
滚动=假;
回来
}
//更改值
logo.src=来源[新主题];
el.classList.remove(主题);
el.classList.add(新主题);
//使用当前状态更新状态变量
主题=新主题;
滚动=假;
});
//将事件侦听器分配给窗口
addEventListener('scroll',scroll\u处理程序);
}
//将我们的新插件附加到元素
导航栏切换器(document.querySelector('.wrap')
正文{
高度:200vh;
}
.包裹{
宽度:100%;
位置:固定;
}
{
背景色:白色;
}
.黑色{
背景色:黑色;
}

忽略一个事实,即问题的简单答案是在使用jQuery时使用
.attr
函数更改元素的属性,这就是我将如何完成问题中提出的任务

首先,我将把所有这些放在一个函数中(主要是将变量和逻辑与其他页面脚本分离,以防止干扰)

我的下一个建议是在两个或多个CSS类中实现背景颜色更改。这样做的好处是简化了JavaScript,并将样式部分保留在样式区域中

接下来,我喜欢为我的“神奇单词”创建常量变量,这样,如果我以后更改使用的单词,我只需在代码中更改一次单词,而不是在使用单词的任何地方

<nav class="navbar navbar-default navbar-fixed-top">
  <div class="navbar-header">
    <a href="#top"><img class="logo" src="img/logo.svg"></a>
 </div>
</nav>
我会将图像源放入一个对象中,其中的键是与这些源相关联的神奇单词。这允许以后快速方便地查找

// cache the magic words
const DARK  = 'dark';
const LIGHT = 'light';
之后,我会预加载图像,以防止在第一次更改源时出现视觉延迟

// define our different sources for easy access later
const sources = {
  light: "http://via.placeholder.com/150x50/fff/000?text=logo",
  dark:  "http://via.placeholder.com/150x50/000/fff?text=logo"
};
之后,只需分配事件侦听器

这里是全部:

功能导航开关(el){
//缓存对logo元素的引用以供以后使用
const logo=el.querySelector('.logo');
//缓存这些神奇的文字
常数暗=‘暗’;
常量灯光=‘灯光’
//定义我们的状态变量
让滚动=假;
让主题=光;
//定义我们的不同来源,以便以后轻松访问
常数源={
光:“http://via.placeholder.com/150x50/fff/000?text=logo",
黑暗:“http://via.placeholder.com/150x50/000/fff?text=logo"
};
//预加载图像以防止jank
document.body.insertAdjacentHTML('beforeed'`
`);
//定义我们的滚动处理程序
常量滚动\u处理程序=\u=>setTimeout(\u=>{
//如果我们已经在处理一个滚动事件,我们不想处理这个事件。
如果(滚动)返回;
滚动=真;
//根据滚动位置确定应显示的主题
const new_theme=document.documentElement.scrollTop>100?暗:亮;
//如果当前主题是应显示的主题,请取消执行
如果(新主题)===