Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
简单JavaScript选择器_Javascript - Fatal编程技术网

简单JavaScript选择器

简单JavaScript选择器,javascript,Javascript,使用纯JavaScript而不使用jQuery之类的库,我如何检测变量是否包含DOM类或ID 例如,如果我将一个值传递给函数,该值可能是 var mySelector = ".class-name"; 或 然后基于mySelector是否持有我将运行的类或ID document.getElementsByClassName 或 如果不使用jQuery之类的库或其他库,那么最好的方法是什么呢?请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,

使用纯JavaScript而不使用jQuery之类的库,我如何检测变量是否包含DOM类或ID

例如,如果我将一个值传递给函数,该值可能是

var mySelector = ".class-name";

然后基于mySelector是否持有我将运行的类或ID

document.getElementsByClassName

如果不使用jQuery之类的库或其他库,那么最好的方法是什么呢?

请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,querySelector将返回所有元素

var mySelector = ".class-name", // "#id-name" will also work fine.
elements = document.querySelectorAll(mySelector);
请注意,这在IE<8中不起作用(请参阅)。polyfill将是添加IE7支持的最佳处理方式。

请查看或。它们都可以通过ID或类(以及其他选择器)查找元素。querySelector将返回1个元素,querySelector将返回所有元素

var mySelector = ".class-name", // "#id-name" will also work fine.
elements = document.querySelectorAll(mySelector);

请注意,这在IE<8中不起作用(请参阅)。polyfill将是添加IE7支持的最佳处理方式。

您可以使用这个简单的
if/else
语句来区分。这还允许您根据引用的是类还是ID来运行其他代码

var mySelector = ".class-name";

if(mySelector.charAt(0) == ".")
{
    document.getElementsByClassName(mySelector.substring(1));
}
else if(mySelector.charAt(0) == "#")
{
    document.getElementsById(mySelector.substring(1));
}

您可以使用这个简单的
if/else
语句进行区分。这还允许您根据引用的是类还是ID来运行其他代码

var mySelector = ".class-name";

if(mySelector.charAt(0) == ".")
{
    document.getElementsByClassName(mySelector.substring(1));
}
else if(mySelector.charAt(0) == "#")
{
    document.getElementsById(mySelector.substring(1));
}

我认为第一种方法是检查笔划的第一个符号。 比如:

var $ = function( string ) {
  var result;
  switch (string.substr(0,1)) {
    case '.': result = document.getElementsByClassName(string); break;
    case '#': result = document.getElementById(string); break;
    default: result = document.getElementsByTagName(string); break;
  }
  return result;
}
var mySelector = ".class-name";
console.log( $(mySelector) );

我认为第一种方法是检查笔划的第一个符号。 比如:

var $ = function( string ) {
  var result;
  switch (string.substr(0,1)) {
    case '.': result = document.getElementsByClassName(string); break;
    case '#': result = document.getElementById(string); break;
    default: result = document.getElementsByTagName(string); break;
  }
  return result;
}
var mySelector = ".class-name";
console.log( $(mySelector) );

仅仅因为您只需要一个选择器,而不需要整个jQuery库,并不意味着您必须使用自己的选择器。jQuery使用Sizzle选择器引擎,您可以自己轻松地使用它,而无需整个jQuery的开销:


仅仅因为您只需要一个选择器而不需要整个jQuery库,并不意味着您必须自己滚动。jQuery使用Sizzle选择器引擎,您可以自己轻松地使用它,而无需整个jQuery的开销:


我不是高级用户,但不久前我创建了以下小脚本:

var;
__=函数(选择器、过滤器){
"严格使用",;
var反应;
功能筛选(选择器、筛选器){
开关(过滤器){
案例“第一”:
返回选择器[0];
打破
“最后”一案:
返回选择器[selectors.length-1];
打破
违约:
返回选择器[过滤器];
打破
}
}
选择器=选择器.trim();
if(typeof filter==“string”){filter=filter.trim();}
if(selector.indexOf(“”)<0&&selector.indexOf(“”,1)<0&&selector.indexOf(“”,1)<0){
开关(选择器substr(0,1)){
案例“”:
response=document.getElementsByClassName(selector.substr(1));
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
案例“#”:
response=document.getElementById(selector.substr(1));
打破
违约:
响应=document.getElementsByTagName(选择器);
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
}
}否则{
if(过滤器类型!=“未定义”){
开关(过滤器){
案例“第一”:
响应=document.querySelector(选择器);
打破
“最后”一案:
响应=document.querySelectorAll(选择器);
响应=响应[response.length-1];
打破
违约:
响应=document.querySelectorAll(选择器);
响应=响应[过滤器];
打破
}
}否则{
响应=document.querySelectorAll(选择器);
如果(response.length==1){response=response[0];}
如果(response.length<1){response=false;}
}
}
返回响应;
};
使用起来很简单:

__("div")
或者通过一些过滤器,如:

__("div", "first")

我没有用它做基准测试。我希望它能帮助您。

我不是高级用户,但不久前我创建了以下小脚本:

var;
__=函数(选择器、过滤器){
"严格使用",;
var反应;
功能筛选(选择器、筛选器){
开关(过滤器){
案例“第一”:
返回选择器[0];
打破
“最后”一案:
返回选择器[selectors.length-1];
打破
违约:
返回选择器[过滤器];
打破
}
}
选择器=选择器.trim();
if(typeof filter==“string”){filter=filter.trim();}
if(selector.indexOf(“”)<0&&selector.indexOf(“”,1)<0&&selector.indexOf(“”,1)<0){
开关(选择器substr(0,1)){
案例“”:
response=document.getElementsByClassName(selector.substr(1));
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
案例“#”:
response=document.getElementById(selector.substr(1));
打破
违约:
响应=document.getElementsByTagName(选择器);
如果(response.length==1){filter=“first”;}
if(typeof filter!=“未定义”){response=筛选(response,filter)}
打破
}
}否则{
if(过滤器类型!=“未定义”){
开关(过滤器){
案例“第一”:
响应=document.querySelector(选择器);
打破
“最后”一案:
响应=document.querySelectorAll(选择器);
响应=响应[response.length-1];
打破
违约:
响应=document.querySelectorAll(选择器);
响应=响应[过滤器];
打破
}
}否则{
响应=document.querySelectorAll(选择器);
如果(回答)。