[英]JS str.split() won't work with data fetched with Jquery?
我正在嘗試用 JS 拆分一個字符串。
我有兩種情況:
1234 & 1234-1
如果我嘗試用“-”分割案例,它工作正常。
但是當案例沒有“-”時,它會給我一個錯誤:
str1.indexOf 不是 HTMLAnchorElement 中的函數。
我想這與 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];
}
這是因為您的str1
是數字而不是字符串。 您可以將其轉換為字符串,以便使用.indexOf
。
let str1 = 12345 console.log(str1.indexOf('-'))
let str1 = "12345" console.log(str1.indexOf('-'))
有關更多詳細信息,請參閱JQuery .data 。 這是解釋為什么你得到數字而不是字符串的部分。
每次嘗試將屬性的字符串值轉換為 JavaScript 值(這包括布爾值、數字、對象、數組和空值)。 只有在不改變其表示形式的情況下,字符串才會被轉換為數字(例如,字符串“100”被轉換為數字 100,但“1E02”和“100.000”被保留為字符串,因為它們的數值為100 序列化為“100”)。 當字符串以 '{' 或 '[' 開頭時,則使用 jQuery.parseJSON 對其進行解析; 它必須遵循有效的 JSON 語法,包括帶引號的屬性名稱。 無法解析為 JavaScript 值的字符串不會被轉換。
要將 data-* 屬性值作為未轉換的字符串檢索,請使用 attr() 方法。
當您使用 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>
這是因為你的變量是一個數字而不是一個字符串,你可以做的是使用toString()
。
var nr = $(this).parent('td').siblings('.td_objNr').data('objnr'); // nr = 12345;
var str1 = nr.toString();
var str2 = "-";
if (str1.indexOf(str2) != -1){
nr = nr.split('-');
nr = nr[0];
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.