2016-05-13 71 views
0

這是我的HTML:語法錯誤,無法識別的表情: '.D img.displayImage'

<div class="flex-item a"> 
    <p>A</p> 
    <img class="displayImage" src="img/image-placeholder.svg" /> 
    <textarea class="textInput"></textarea> 
</div> 

<div class="flex-item b"> 
    <p>B</p>   
    <img class="displayImage" src="img/image-placeholder.svg" /> 
    <textarea class="textInput"></textarea> 
</div> 

<div class="flex-item c"> 
    <p>C</p>   
    <img class="displayImage" src="img/image-placeholder.svg" /> 
    <textarea class="textInput"></textarea> 
</div> 

<div class="flex-item d"> 
    <p>D</p>   
    <img class="displayImage" src="img/image-placeholder.svg" /> 
    <textarea class="textInput"></textarea> 
</div> 

這是我的JS:

var arr = ["a", "b", "c", "d"]; 
var imageAreaArray = []; 

$.each(arr, function(i, val){ 
    imageAreaArray.push("document.querySelector('." + val + " img.displayImage')"); 
});  

$.each(imageAreaArray, function(i, val){ 
    var contentVal = $("'." + arr[i] + "img.displayImage'").closest('textarea'); 
    imagePath = $("'." + arr[i] + " img.displayImage'").src; 
}); 

這應該採取就近<textarea>的價值在所選的'<div>'中的img.displayImage,並且還採用img.displayImagesrc,但出現以下錯誤,我不確定如何解決。

Uncaught Error: Syntax error, unrecognized expression: '.d img.displayImage'

UPDATE

不再收到錯誤消息,但現在contentValimagePath被顯示爲未定義。任何想法爲什麼undefined可能會顯示?

+1

你能解釋一下你準備做什麼,因爲我可以保證你有更好的辦法。 –

+0

我不知道我是否可以調用這種意大利麪代碼,但它是某種意大利麪,並不是一種好的方法。 –

+0

@RoryMcCrossan:我試圖將圖像和文本上傳到API,但現在我不再獲取<未捕獲的錯誤,無法識別的表達式:'.d img.displayImage','contentVal'和'imagePath'顯示爲未定義。任何想法如何解決這個錯誤? –

回答

0

你有jQuery選擇額外的單引號,這是取值爲無效選擇像$("'.a .. ..'")

$.each(imageAreaArray, function(i, val){ 
    var contentVal = $("'." + arr[i] + "img.displayImage'").closest('textarea'); 
    //     ^^ 
    imagePath = $("'." + arr[i] + " img.displayImage'").src; 
    //   ^^ 
}); 
  1. 此外$(..).src將輸出不確定。請使用$(..)[0].src$(..).prop('src')來獲取源代碼。
  2. .closest('..')返回最接近的父元素。 <textarea>這裏是img的兄弟姐妹。使用.next('textarea')而不是.closest()
0

我看到了代碼中的兩個潛在問題。首先,我不相信jQuery選擇器需要用單引號包裝,所以擺脫這些。其次,當查詢最近的textarea時,你錯過了arr [i]和img.displayImage之間的空格。

我建議緩存的jQuery選定的元素:

var element = $(`.${arr[i]} img.displayImage`); 
var contentVal = element.closest('textarea'); 
imagePath = element.src; 

注意,`字符是backticks,通常在發現左上角英語鍵盤。此語法要求您定位的瀏覽器支持ES6字符串插值。作爲替代,您可以使用您當前使用的相同方法構建選擇器。

var element = $("'." + arr[i] + " img.displayImage'"); 
... 
+0

謝謝@jjbandit。該錯誤不再顯示,但'var element'顯示爲未定義。有任何想法爲什麼這可能會發生? –

+0

沒有代碼示例我很不確定。 – jjbandit

相關問題