2015-09-03 34 views
2

下面是我遇到問題的代碼片段。我得到了JShint「期待一個賦值或函數,而是看到一個表達式」。預期的作業或功能,而不是看到一個表達式

function checkVal(inputField) { 
     (inputField.val() === '') ? inputField.prev('.cd-label').removeClass('float') : inputField.prev('.cd-label').addClass('float'); 
    } 
}); 
+0

idk如果是相關的,但他首先注意的是額外的'});'最後? – Markasoftware

回答

4

該警告是告訴你,下面的行可能是一個錯誤或缺陷:

(inputField.val() === '') ? inputField.prev('.cd-label').removeClass('float') : inputField.prev('.cd-label').addClass('float'); 

它的使用返回?後的值ternary operator如果表達式之前,它是真實的表達,否則爲:之後的值。所以基本上,這就像是一個簡短的if聲明,它會導致一個賦值。

要刪除的警告,你需要將其分配給一個變量是這樣的:

var yourVariable = (inputField.val() === '') ? inputField.prev('.cd-label').removeClass('float') : inputField.prev('.cd-label').addClass('float'); 

然而,對於你的情況,你可能真的不希望這種分配到任何東西,所以你應該只使用改爲if聲明。

2

您應該在這裏使用if塊。

if(inputField.val() === ''){ 
    inputField.prev('.cd-label').removeClass('float'); 
} 
else{ 
    inputField.prev('.cd-label').addClass('float'); 
} 

三元運算符(?:)應該只在一個上下文中使用,其中它返回的值。如:

var x = condition ? 'a' : 'b'; 
相關問題