JS str.split()无法与通过Jquery提取的数据一起使用?

时间:2019-03-15 10:12:18

标签: javascript jquery

我正在尝试使用JS分割字符串。

我有两种情况:
1234&1234-1

如果我尝试用“-”分割大小写,则效果很好。
但是,如果大小写不包含“-”,则会给我一个错误:

  

str1.indexOf不是函数       在HTMLAnchorElement。

我猜这与Jquery有关系吗?

JQUERY

//THIS DON'T WORK
var nr = $(this).parent('td').siblings('.td_objNr').data('objnr'); // nr = 12345

var str1 = nr;
var str2 = "-";
if(str1.indexOf(str2) != -1){
    nr = nr.split('-');
    nr = nr[0];
}

//THIS WORKS
var nr = '12345';

var str1 = nr;
var str2 = "-";
if(str1.indexOf(str2) != -1){
    nr = nr.split('-');
    nr = nr[0];
}

3 个答案:

答案 0 :(得分:0)

这是因为您的str1是数字而不是字符串。您可以将其转换为字符串,以便使用.indexOf

let str1 = 12345
console.log(str1.indexOf('-'))

let str1 = "12345"
console.log(str1.indexOf('-'))

有关更多详细信息,请参见JQuery .data。 这是解释为什么获取数字而不是字符串的部分。

  

会尽一切努力将属性的字符串值转换为JavaScript值(包括布尔值,数字,对象,数组和null)。字符串仅在不改变其表示形式的情况下才转换为数字(例如,字符串“ 100”转换为数字100,但是将“ 1E02”和“ 100.000”保留为字符串,因为它们的数值为100序列化为“ 100”)。当字符串以'{'或'['开头时,则使用jQuery.parseJSON进行解析;它必须遵循有效的JSON语法,包括带引号的属性名称。无法转换为JavaScript值的不可解析字符串。

     

要使用未转换的字符串检索data- *属性值,请使用attr()方法。

答案 1 :(得分:0)

使用jquery的.data()时,它将转换并返回正确的类型,因此<div data-val="123"/>$("div").data("val") === 123(请注意===)和$("div").data("val") !== "123"

要确保获得字符串,您可以:

  • 使用.attr("data-val"),它将始终是字符串
  • 使用val.toString
  • 转换为字符串
  • 使用或val+""
  • 转换为字符串

console.log('$("#t1").data("val") === 123', $("#t1").data("val") === 123)
console.log('$("#t1").data("val") === "123"', $("#t1").data("val") === "123")
console.log('$("#t2").data("val") === "123-1"', $("#t2").data("val") === "123-1")
console.log(' $("#t1").attr("data-val") === "123"', $("#t1").attr("data-val") === "123")
console.log('$("#t1").data("val")+"" === "123"', $("#t1").data("val")+"" === "123")
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='t1' data-val="123">123</div>
<div id='t2' data-val="123-1">123-1</div>

答案 2 :(得分:0)

这是因为您的变量是数字而不是字符串,所以您可以使用with my_data(mac) as ( values ('AA-BB-CC-DD-EE-FF'::macaddr) ), octet as ( select mac, ('x' || left(mac::text, 2))::bit(8) as binary_octet from my_data ) select mac, binary_octet, get_bit(binary_octet, 7) as ig_bit, get_bit(binary_octet, 6) as ul_bit from octet

toString()