2013-09-22 2 views
1

Я могу создать SVG шестиугольник с помощью некоторых точек, полученных от Inkscape использовать следующий JavaScript:нанизывания SVG точек пути с помощью Javascript

var createHex = function(fill) { 
    var NS = 'http://www.w3.org/2000/svg'; 
    var hexagon = document.createElementNS(NS, 'path'); 
    hexagon.setAttribute('d', 'm 311.5022,270.79644 62.8676,108.88986 -62.86759,108.88987 -125.73518,1e-5 -62.8676,-108.88986 62.86759,-108.88987 z'); 
    hexagon.setAttribute('fill', fill); 
    hexagon.setAttribute('style', 'opacity:0.125'); 
    return hexagon; 
} 

Однако при попытке иметь некоторую Javascript математики и конкатенации ручки точечная генерация тем же способом, функция ничего не возвращает:

var test = function(fill) { 
    var NS = 'http://www.w3.org/2000/svg'; 
    var test = document.createElementNS(NS, 'path'); 
    var pt1x = 1 * 300; 
    var pt1y = 0 * 300; 
    var pt2x = (1/2) * 300; 
    var pt2y = (sqrt(3)/2) * 300; 
    var pt3x = (-1/2) * 300; 
    var pt3y = (sqrt(3)/2) * 300; 
    var pt4x = -1 * 300; 
    var pt4y = 0 * 300; 
    var pt5x = (-1/2) * 300; 
    var pt5y = (-sqrt(3)/2) * 300; 
    var pt6x = (1/2) * 300; 
    var pt6y = (-sqrt(3)/2) * 300; 
    test.setAttribute('d', 'm ' + pt1x + ',' + pt1y + ' ' + pt2x + ',' + pt2y + ' ' + pt3x + ',' + pt3y + ' ' + pt4x + ',' + pt4y + ' ' + pt5x + ',' + pt5y + ' ' + pt6x + ',' + pt6y + ' z'); 
    test.setAttribute('fill', fill); 
    test.setAttribute('style', 'opacity:0.125'); 
    return test; 
} 

Я новичок в JavaScript и SVG; кто-нибудь может сказать мне, что мне не хватает?

ответ

2

Проверьте наличие ошибок в вашей консоли. sqrt() не является глобальной функцией JavaScript. Вы хотите Math.sqrt().

Смежные вопросы