2016-11-11 1 views
1

Я пытаюсь использовать переменные JavaScript в качестве селекторов jQuery для изменения заполнения пути SVG (на самом деле, чтобы «отменить» последнее изменение, внесенное в них). Я могу правильно получить доступ к последнему измененному пути, а «цвет» был заполнен, и я дважды проверил это с помощью операторов console.log().Проблема с использованием переменной JavaScript в качестве селектора jQuery - непризнанное выражение

Они:

var path = Object.keys(allChanges[0]).shift(); 

    var oldFill = Object.keys(allChanges[0]).map(function(key){ 
    return allChanges[0][key]; 
    }).shift(); 

"путь" и "oldFill" это то, что они должны быть. Я пытаюсь использовать их как JQuery селекторы здесь:

$("'#"+path+"'").css('fill', "'"+oldFill+"'"); 

Но я получаю сообщение об ошибке, говорящее

"ошибка синтаксиса, непризнанный выражение:" # node27" < - # node27 является путь, к которому я попал, был нацелен.

Все они имеют идентификаторы в моем элементе svg.

Кто-нибудь знает, где я здесь ошибся ?! Я посмотрел на это миллион раз!

+0

не вы слишком много цитат? селектор jquery - это строка, но вы помещаете кавычки в эту строку – ted

ответ

3

У вас возникла проблема с апострофами. Вам придется обновить этот

$("'#"+path+"'").css('fill', "'"+oldFill+"'"); 

с этим

$("#"+path).css('fill', oldFill); 
+0

А, это сработало! Но почему вам не нужны котировки? Если бы я писал это вручную, мне понадобились бы котировки вокруг селектора и oldFill .... они автоматически вставляются автоматически? – bjorkland

+1

Вы были в основном двойным цитированием. Вам не нужны кавычки и апострофы. '# node27' или "# node27", но не "'# node27'" – Araymer

+1

'' # "' и 'path' - это уже строки. Поместив туда дополнительные апострофы, вы делали '$ (" '# foo' ")', а не '$ (" # foo ")'. –

1

Вы просто впадающей проблемы с вашими цитатами. Ваши переменные уже являются строками, поэтому вам не нужно их цитировать.

попробовать это:

$("#" + path).css('fill', oldFill); 
+1

О! Я не понял, что переменные уже были строками. Когда я консоль регистрировал их, они не выглядели так, как будто они были, поэтому я думал, что мне нужны кавычки. – bjorkland

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