javascript - 使用本地存储更改 CSS 背景图片

标签 javascript jquery html css

我在处理一段 JavaScript 代码时遇到了一些麻烦。

代码如下:`

$(switchBackground);
var oFReader = new FileReader(),
    rFilter = /^(?:image\/bmp|image\/cis\-cod|image\/gif|image\/ief|image\/jpeg|image\/jpeg|image\/jpeg|image\/pipeg|image\/png|image\/svg\+xml|image\/tiff|image\/x\-cmu\-raster|image\/x\-cmx|image\/x\-icon|image\/x\-portable\-anymap|image\/x\-portable\-bitmap|image\/x\-portable\-graymap|image\/x\-portable\-pixmap|image\/x\-rgb|image\/x\-xbitmap|image\/x\-xpixmap|image\/x\-xwindowdump)$/i;

oFReader.onload = function(oFREvent) {
    localStorage.setItem('b', oFREvent.target.result);
    switchBackground();
};

function switchBackground() {
  var backgroundImage = localStorage.getItem('b');
  if (backgroundImage) {
    $('#profile').css('background-image', 'url(' + backgroundImage + ')');    
  } 
}

function loadImageFile(testEl) {
  if (! testEl.files.length) { return; }
  var oFile = testEl.files[0];
  if (!rFilter.test(oFile.type)) { alert("You must select a valid image file!"); return; }
  oFReader.readAsDataURL(oFile);
}

`

我的问题如下,因为我对 JavaScript 几乎一无所知,所以我很难弄清楚如何克隆该代码。 我有 2 <div>的 - 一个 id="profile"另一个是id="start-menu" , 我希望我的网页的用户能够更改这两个 <div> 的背景图像的,但直到现在我只能更改 <div>id="profile" .他们改变这些背景的方式是通过一个输入按钮,更确切地说是这个按钮:

<input id="test" type="file" onchange="loadImageFile(this)" />

我已经尝试在一些函数名中添加一些其他字符,然后只需更改 id="test2"onchange="loadImageFile2(this) ,但直到现在我还没有成功。 顺便说一下,我不希望用同一个按钮更改背景,有 2 个不同的输入按钮,两者的结构与上面相同(除了函数调用它们几乎相同)。

我究竟需要在上面的 JS 代码中更改什么才能使其与 div 一起工作?的?写答案时请尽量清楚,因为我的母语不是英语,有时我对某些短语的理解有点困难。

最佳答案

这一行很重要:

$('#profile').css('background-image', 'url(' + backgroundImage + ')');

看到#profile部分了吗?那是一个 selector .这是告诉浏览器更改 ID=profile 的 div 的背景。如果您将其更改为:

$('#start-menu').css('background-image', 'url(' + backgroundImage + ')');

然后它会更新另一个 div。

如果您希望它用相同的图像更新两个 div,只需执行以下操作:

function switchBackground() {
    var backgroundImage = localStorage.getItem('b');
    if (backgroundImage) {
        $('#profile').css('background-image', 'url(' + backgroundImage +')');
        $('#start-menu').css('background-image', 'url(' + backgroundImage +')');   
    } 
}

如果您希望它们是单独的图像,那么您必须修改 switchBackground 函数以接受要切换的 div 的参数。

关于javascript - 使用本地存储更改 CSS 背景图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103512/

相关文章:

javascript - 当数组有一个值(即使它是空字符串)时处理条件逻辑?

jquery - 如果容器具有特定元素,则更改容器的宽度

javascript - HTML5 Canvas 获取 div 的屏幕截图不起作用

javascript - 获取另一页输入框的值

javascript - 在 JQuery 中获取祖 parent 的第一个 child 的最优雅、可靠和高效的方法是什么?

javascript - jQuery ajax跨域调用及权限问题

javascript - 当状态改变时,React-typing-animation 不会重新渲染

javascript - 在 Jquery 中创建项目列表

javascript - 为 Bootstrap 模式编写回调函数

html - 如何创建一个一段时间后消失的div,但悬停会保留它?