2016-11-11 37 views
1

我試圖使用JavaScript變量作爲jQuery選擇來改變SVG路徑的填充(真的,「撤銷」向他們提出最近的更改)。我能夠正確地訪問修改後的最後一條路徑,以及它填充的「顏色」,並且我已經用console.log()語句對此進行了重複檢查。問題 - 無法識別的表達

它們是:

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是我正好瞄準的道路。

他們都有ID在我的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

相關問題