我正在尝试使用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];
}
答案 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()