HTML
JavaScript我有这么远
var $= function(selector){
var elements = [];
if (selector == "#some_id"){
elements.push( document.getElementById("some_id"));
}else if (selector == '.some_class'){
elements= document.getElementsByClassName("some_class");
} else if (selector == "div"){
elements = document.getElementsByTagName("div");
}else if (selector == "img"){
elements.push(document.getElementsByTagName("img"));
}
console.log(elements);
return elements;
};
在获取嵌套选择器时遇到问题:(“img.some_class”)和(“div.some_class#some_id”)
答案 0 :(得分:2)
您是否尝试过querySelector
或querySelectorAll
?
以下是两个简单的例子:
var el = document.querySelector(".myclass");
var matches = document.querySelectorAll("div.note, div.alert");
有关更多信息,请参阅此处: https://developer.mozilla.org/en-US/docs/Web/API/document.querySelectorAll
jQuery选择器的一个非常简单的模拟:
$ = function (selector) {
return document.querySelectorAll(selector);
}
答案 1 :(得分:0)
我想你被要求不要像我一样使用JQuery和 querySelector()/ querySelectorAll()。
你可以找到这样的嵌套选择器:
...} else if (selector == "div#some_id.some_class") {
elements.push(document.getElementById("some_id"));
} else if (selector == "div.some_class#some_id") {
elements.push(document.getElementById("some_id"));
}
...
你的答案很棒,因为我花了两天时间试图获得它而你的答案非常简单,我可以很快完成最后两次测试。
我仍然不知道为什么这首先起作用,并且它不干,但我想它对将来的人有用。