Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.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_Jquery - Fatal编程技术网

Javascript 删除变量值中的选择器条件

Javascript 删除变量值中的选择器条件,javascript,jquery,Javascript,Jquery,我正在创建一个网上商店,带有指向产品的特定链接,例如() 我正在使用以下代码 var get_product_availability_classname = $("[class$='_availability']").attr('class'); 它选择(创建一个值为的变量)类以“\u availability”结尾的元素 每个产品页面在\u可用性之前都有一段不同的文本,如GOOGLENEXUS5\u可用性,SAMSUNG4KTV\u可用性,任何可用性 我现在要做的是从本质上删除我用来获取整

我正在创建一个网上商店,带有指向产品的特定链接,例如()

我正在使用以下代码

var get_product_availability_classname = $("[class$='_availability']").attr('class');
它选择(创建一个值为的变量)类以“\u availability”结尾的元素

每个产品页面在
\u可用性
之前都有一段不同的文本,如
GOOGLENEXUS5\u可用性
SAMSUNG4KTV\u可用性
任何可用性

我现在要做的是从本质上删除我用来获取整个类名的标准(即
类$=''u可用性“
);使用上面的示例,它将从
SAMSUNG4KTV\u可用性
调整为
SAMSUNG4KTV

可能的解决方案 我还不知道如何使用,但我们可以使用JavaScript的substring()或substr()。

使用回调方法,并使用regex方法更新类名

虽然可以使用,因为有可能有多个类,但在这种情况下,类可以在开始时使用,也可以在两个类之间使用

var get_product_availability_classname = $("[class*='_availability '],[class$='_availability']");

get_product_availability_classname.attr('class',function(i,v){
   return v.replace(/_availability\b/g,'');
});
var get\u product\u availability\u classname=$(“[class*=”availability'],[class$=”availability']);
获取产品可用性类名称attr('class',函数(i,v){
返回v.replace(/\u可用性\b/,“”);
});
log(document.body.innerHTML)

使用带有回调的方法,并使用带有regex的方法更新类名

虽然可以使用,因为有可能有多个类,但在这种情况下,类可以在开始时使用,也可以在两个类之间使用

var get_product_availability_classname = $("[class*='_availability '],[class$='_availability']");

get_product_availability_classname.attr('class',function(i,v){
   return v.replace(/_availability\b/g,'');
});
var get\u product\u availability\u classname=$(“[class*=”availability'],[class$=”availability']);
获取产品可用性类名称attr('class',函数(i,v){
返回v.replace(/\u可用性\b/,“”);
});
log(document.body.innerHTML)

如果类名中只有一个

var get_product_availability_classname = $("[class$='_availability']").attr('class')
.split(' ') // split the class to individual classes
.filter(function(cls) { // filter ones with _availability
    return cls.split('_').pop() == 'availability');
})[0]; // use first match
var product = get_product_availability_classname.split('_')[0]
.split(“”“)
创建一个数组
[“产品”、“可用性”]
[0]
选择此数组的第一项

或者你也可以

var product = get_product_availability_classname.split('_availability')[0]

除了在字符串
\u availability
上拆分外,这也会做同样的事情,如果类名中只有一个
\u
,那么前缀中有多少
\u
并不重要

var get_product_availability_classname = $("[class$='_availability']").attr('class')
.split(' ') // split the class to individual classes
.filter(function(cls) { // filter ones with _availability
    return cls.split('_').pop() == 'availability');
})[0]; // use first match
var product = get_product_availability_classname.split('_')[0]
.split(“”“)
创建一个数组
[“产品”、“可用性”]
[0]
选择此数组的第一项

或者你也可以

var product = get_product_availability_classname.split('_availability')[0]

这做了同样的事情,除了在字符串
\u availability
上拆分,而且前缀中有多少
\u
并不重要如果字符串始终是x\u y格式,其中x和y不包含下划线,则可以使用split函数在下划线上拆分

    var str = "SAMSUNG4KTV_availability";
    var result = str.split("_")[0];
    console.log(result);

split函数返回一个字符串数组,其中每个下划线之间包含子字符串,您可以使用[0]选择数组中的第一个元素。

如果字符串的格式始终为x_y,其中x和y不包含下划线,则可以使用split函数在下划线上拆分

    var str = "SAMSUNG4KTV_availability";
    var result = str.split("_")[0];
    console.log(result);

split函数返回一个字符串数组,每个下划线之间包含子字符串,您可以使用[0]选择数组中的第一个元素。

在这种情况下,最好使用正则表达式。下面将在classes字符串中查找_可用性,如果找到它,它将捕获之前的内容

var get_product_availability_classname = $("[class$='_availability']").attr('class');

var matches = /([^\s]*)_availability\b/g.exec(get_product_availability_classname)

if(matches.length > 1){
    var your_id = matches[1];
}

在这种情况下,最好使用正则表达式。下面将在classes字符串中查找_可用性,如果找到它,它将捕获之前的内容

var get_product_availability_classname = $("[class$='_availability']").attr('class');

var matches = /([^\s]*)_availability\b/g.exec(get_product_availability_classname)

if(matches.length > 1){
    var your_id = matches[1];
}

可以添加示例html标记吗?可以添加示例html标记吗?此解决方案错误。它只在元素只有一个类的情况下工作。如果在可用性类之前有一个类,它将失败。通过更新到
get\u product\u availability\u classname
修复此解决方案错误。它只在元素只有一个类的情况下工作。如果在可用性类之前有一个类,它将失败。通过更新到
get\u product\u availability\u classname
修复了我遇到的新问题。如果可以,.@alej27使用
窗口[您的\u id+'\u预期的\u可用性\u日期]
获取变量值我遇到了一个新问题。如果可以,.@alej27使用
窗口[您的\u id+'\u预期的\u可用性\u日期]
获取变量值