簡體   English   中英

JS str.split() 不適用於使用 Jquery 獲取的數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM