Попытка парсинга двух атрибутов SVG одновременно - PullRequest
0 голосов
/ 03 июля 2019

SUP, ребята. Мне удалось заставить мой код делать то, что я хочу, с помощью const Lines. Моя главная проблема в том, что я пытаюсь получить значение stroke, которое соответствует правильному значению points. Как вы можете сказать, мой скрипт анализирует SVG с этого URL и отправляет каждое значение points с пост-запросом. Могу ли я в любом случае получить соответствующее значение stroke, когда оно получит значение points? Чем использовать это с запросом так же, как l: (JSON.stringify(line))? Таким образом, он отправит line с соответствующим значением stroke в запросе ?? Значение Stroke должно быть в формате HEX при отправке запроса так же, как оно отображается в штрихе: ПРИМЕР #30f011.

Кроме того, возможно, в конечном итоге сможет сделать другие атрибуты, как это? Если нужно, скажем, stroke-Width?

В моем скрипте вы можете видеть в запросе, где я добавил stroke. Это странно форматирует шестнадцатеричный код и получает только первое значение stroke, и не более того. Он остается прежним ??

xhr=new XMLHttpRequest();
xhr.open("GET", "http://colorillo.com/bwf7.inline.svg");
xhr.addEventListener("load", function() {
const xmlDoc = new DOMParser().parseFromString(
this.responseText.trim(),
"image/svg+xml"
);
const Lines = Array.from(xmlDoc.getElementsByTagName('polyline'), pl =>
pl.getAttribute('points').split(' ').map(pair =>
pair.split(',').map(Number)));

const styles = Array.from(xmlDoc.getElementsByTagName('polyline'), pl =>
pl.getAttribute('style').split(';'))[0];

let stroke = null;

for(let style of styles) {
let valueOffset = style.indexOf(':');
if(style.substr(0, valueOffset).trim() === 'stroke') {
    stroke = style.substr(valueOffset + 1).trim()
    break;
}
}

Lines.forEach(line => $.post("/draw.php?ing=_index", {
l: (JSON.stringify(line)),
w: ("1"),
c: (stroke), //Only seems to get the first HEX value of line. and that's it.... I need all for each matching ``line``
o: ("75"),
f: ("1"),
_: ("false")
                }));
});

xhr.send();
...