【问题标题】:How to update the source of an Image如何更新图像的来源
【发布时间】:2011-02-21 16:22:58
【问题描述】:

我正在使用 Raphaël Javascript 库(顺便说一下,用于 SVG 渲染的好东西),目前我正在尝试在鼠标移过图像时更新图像的源代码。

问题是我找不到任何关于它的东西(这可能甚至不可能,考虑到我已经阅读了 Raphaël 的大部分资料却没有找到任何相关的东西)。

有人知道这样做的方法吗? 也许可以不直接使用 Raphaël 的 API 来完成,但是由于生成的 DOM 元素没有 ID,我不知道如何手动更改它们的属性。

我实际上是在做 CoffeeScript,但它真的很容易理解。 CoffeeScript 毕竟是 Javascript。 这就是我正在做的事情,我希望 MouseOver 和 MouseOut 方法来更改“bg”属性的来源。

class Avatar
  constructor: (father, pic, posx, posy) ->
    @bg = father.container.image "pics/avatar-bg.png", posx, posy, 112, 112
    @avatar = father.container.image pic, posx + 10, posy + 10, 92, 92
    mouseOver = => @MouseOver()
    mouseOut = => @MouseOut()
    @bg.mouseover mouseOver
    @bg.mouseout mouseOut

  MouseOver: ->
    @bg.src = "pics/avatar-bg-hovered.png"
    alert "Hover"


  MouseOut: ->
    @bg.src = "pics/avatar-bg.png"
    alert "Unhovered"

class Slider
  constructor: ->
    @container = Raphael "raphael", 320, 200
    @sliderTab = new Array()

  AddAvatar: (pic) ->
    @sliderTab.push new Avatar this, pic, 10, 10

window.onload = ->
  avatar = new Slider()
  avatar.AddAvatar "pics/daAvatar.png"

这实际上是有效的,除了“@bg.src”部分:我写它时知道它不会起作用,但是很好......

【问题讨论】:

  • 完成:)!它是 CoffeeScript,但是...与 Javascript 几乎相同,只是对对象更友好。

标签: javascript image raphael


【解决方案1】:
var paper = Raphael("placeholder", 800, 600);
var c = paper.image("apple.png", 100, 100, 600, 400);
c.node.href.baseVal = "cherry.png"

希望你能明白。

【讨论】:

  • 如人们所愿,也适用于今天的Snap.svg
【解决方案2】:

这对我有用(适用于所有浏览器):

targetImg.attr({src: "http://newlocation/image.png"})

【讨论】:

    【解决方案3】:

    我一直在使用 rmflow 的答案,直到我开始在 IE8 及以下测试中返回未定义的 image.node.href.baseVal。 IE8 及以下版本确实看到了 image.node.src,所以我编写了函数 getImgSrc、setImgSrc 以便可以针对所有浏览器。

    function getImgSrc(targetImg) {
        if (targetImg.node.src) {
            return targetImg.node.src;
        } else {
            return targetImg.node.href.baseVal;
        }
    }
    
    function setImgSrc(targetImg, newSrc) {
        if (targetImg.node.src) {
            targetImg.node.src = newSrc;
        } else {
            targetImg.node.href.baseVal = newSrc;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-13
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 2021-07-06
      • 1970-01-01
      • 2012-01-23
      相关资源
      最近更新 更多