这个snap svg插件有什么问题?

时间:2015-02-03 07:12:50

标签: javascript svg raphael snap.svg

我有这段代码:

 el.replace(/[0-9]*\.[0-9]*/g, function(x){ return (+x).toFixed(2)  }) };

它适用于单个svg路径以修剪其小数位。现在我希望能够从纸张(svg)修剪所有路径。为此,我试图在这里制作一个快照svg插件:

Snap.plugin(function(Snap, Element, Paper, glob){

     Paper.prototype.trimPthDec = function(){

    this.paper.selectAll('path').forEach( function(el) { el.trim() } ) ;

      function  trim(){

     el.replace(/[0-9]*\.[0-9]*/g, function(x){ return (+x).toFixed(2)  }) };

        //return paper;

});

但是当我把它称为:

时,它似乎不起作用
// And use it like this to update the paper with new paths?!:
trimPthDec(); // I get this error: Uncaught ReferenceError: trimPthDec is not defined

有人可以告诉我为什么它不起作用吗?

1 个答案:

答案 0 :(得分:1)

插件和代码几乎没有错误...主要是它在纸上运行,所以你需要在代码中正确引用该文件,并将该函数称为原型,而不是一个独立的函数(所以纸张.func()而不是func())

Snap.plugin(function(Snap, Element, Paper, glob){

     Paper.prototype.trim = function(){

         this.selectAll('path').forEach( function(el) { 
             el.attr('d') && el.attr({ 'd':  el.attr('d').replace(/[0-9]*\.[0-9]*/g, function(x){ return (+x).toFixed(2)  }) });

          });
       };
});

var s = Snap("#svg");

var block = s.path('M200.123345,43.2432');

s.trim();
alert(block.attr('d'));

jsfiddle