Как дать атрибуты конкретному объекту в массиве - PullRequest
0 голосов
/ 02 июля 2019

У меня есть массив с объектами.Теперь я хочу найти некоторые из них и дать им разные атрибуты.Мол, все объекты, которые <1900, должны быть желтыми.</p>

Я уже пытался создать функцию с оператором if-.Я хочу иметь функцию, поэтому позже я могу использовать имя функции в .attr {(...),} Если я закомментирую функцию, все будет работать.


var paper;
var i, j = 0;
var paperWidth, paperHeight = 0;
var xPos, yPos, radius = 0;

function init() {
    paper = Snap("#svgContainer");
    for (i = 0; i < data.length; i++) {
        data[i].circle = paper.circle(0, 0, 1);
    }
}

    function Years() {
        for (var i = 0; i < data.length - 0; i++) {
            xPos = map(data[i].longitude, (0 - 180), 180, 0, paperWidth);
            yPos = paperHeight - map(data[i].latitude, (0 - 90), 90, 0, paperHeight);

            function color() {
                if (data.year > 0 && < 1000) {
                    circleColor = "black"
                } else if (data.year > 1000 && < 1500) {
                    circleColor = "red"
                } else {
                    circleColor = "orange"
                }
            }

            data[i].circle.animate({
                cx: xPos,
                cy: yPos,
                fill: color,
                r: 5,
            }, 50);
        };
}

Возможно, что-то не так с функцией.Консоль регистрирует «SyntaxError: ожидаемое выражение, полученное« <»» или то же самое с «..., полученное 'if'" </p>

1 Ответ

0 голосов
/ 02 июля 2019

Ваш код довольно непонятен ... Давайте попробуем что-нибудь более подобное (но я не имею представления о вашей цели)

var data = [{...}];
var paperHeight = '???';
var map = '???';

function init() {
    var paper = Snap("#svgContainer");

    for (var i = 0; i < data.length; i++) {
      var d = data[i];

      var color = 'black';
      if (d.year > 1000 && d.year < 1500) {
        color = "red"
      } else {
        color = "orange"
      }

      var animation = {
        cx: map(d.longitude, (0 - 180), 180, 0, paperWidth),
        cy: paperHeight - map(d.latitude, (0 - 90), 90, 0, paperHeight),
        fill: color,
        r: 5
      };

      d.circle = paper.circle(0, 0, 1);
      d.circle.animate(animation, 50);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...