爲什麼這不起作用?如何在JavaScript列表上使用CSS選擇器?
var animals = ['Cat', 'Dog'].valueOf;
if ("animals:contains(Cat)") {
// ...
}
爲什麼這不起作用?如何在JavaScript列表上使用CSS選擇器?
var animals = ['Cat', 'Dog'].valueOf;
if ("animals:contains(Cat)") {
// ...
}
您要使用的indexOf
method of Array
:
if(animals.indexOf('Cat') != -1){
// ...
}
任何字符串不爲空(""
)將truthy,所以如果你做if("some string")
的if
的身體會始終運行。
您不能在Javascript中的數組上使用CSS選擇器。您可以使用indexOf
來查看數組中是否存在特定的字符串。
if (animals.indexOf('Cat') > -1) {
console.log('We have kitties.')
}
在JavaScript中真正使用CSS選擇器的唯一時間是查詢DOM時。
看來你想要的東西,像JSONSelect:
JSONSelect定義語法和結構非常相似, CSS3選擇一種語言。 JSONSelect表達式可以是 與JSON文檔匹配的模式。
請注意,:contains
不是標準的CSS psedo-class,但JSONSelect將其作爲擴展提供。
var animals = ['Cat', 'Dog'];
if (JSONSelect.match(':contains("Cat")', animals).length) // truthy
document.write('There is a cat');
if (JSONSelect.match(':contains("Elephant")', animals).length) // falsy
document.write('There is an elephant');
<script src="http://jsonselect.org/js/jsonselect.js"></script>
當然不過,這是矯枉過正。更好地使用How do I check if an array includes an object in JavaScript?中解釋的方法。
就像這樣。 換句話說,我需要的是:如果這包含改變另一個元素的CSS – Riba
JavaScript不知道任何關於CSS。你需要使用一個JavaScript函數,而不是一個CSS選擇器。 –
您使用的是什麼HTML,以及您期望得到的結果是什麼?至於你的'if',它看起來像使用''Array.prototype.indexOf()'](https:// developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)。然而,它不起作用的原因是,這不是你使用JavaScript的方式。 –