2012-11-14 15 views
5

Javascriptを使用してページ上の既存のSVGに画像パターンを動的に変更/追加するにはどうすればよいですか?または任意のライブラリ。これは私がこれまで持っているものであるJavaScriptを使用してSVGの画像パターンを動的に変更する方法

..あなたがのxlink名前空間にある属性を設定するためにsetAttributeNSを使用するneeed

function addSvgStuff(svg, id) { 

    var svgNS = svg.namespaceURI; 
    var pattern = document.createElementNS(svgNS, 'pattern'); 

    pattern.setAttribute('id', id); 
    pattern.setAttribute('patternUnits', 'userSpaceOnUse'); 
    pattern.setAttribute('width', 500); 
    pattern.setAttribute('height', 500); 

     var image = document.createElementNS(svgNS, 'image'); 
     image.setAttribute('xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg'); 
     image.setAttribute('x', -100); 
     image.setAttribute('y', -100); 
     image.setAttribute('width', 500); 
     image.setAttribute('height', 500); 

    pattern.appendChild(image); 

    var defs = svg.querySelector('defs') || 
    svg.insertBefore(document.createElementNS(svgNS,'defs'), svg.firstChild); 

    $('svg polygon').attr('fill', 'url(#' + id + ')'); 

    return defs.appendChild(pattern); 
} 

答えて

6

ので

image.setAttribute('xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg'); 

はする必要があります

image.setAttributeNS('http://www.w3.org/1999/xlink', 'xlink:href', 'http://www.jampez.co.uk/sensoryuk/events/test.jpg'); 
+0

ありがとうございます!それは動作します:) –

+0

おかげで束。これを探していた。 – susrut316

+0

@DanielHill jampez.co.ukは古いポートフォリオのウェブサイトでした。あなたはこのコードをどこで入手しましたか? – jampez77

関連する問題