我遇到的問題是切片未定義 - 無法讀取未定義的屬性(讀取“切片”)如果值未定義或錯誤,我如何撰寫代碼以使用,只需使用 $("#x").val().slice(3,5)
像這樣嘗試但似乎不起作用
w = (typeof x.val() !== 'undefined') ? $("#x").val().slice(3,5) : 0;
uj5u.com熱心網友回復:
x.val()并且$("#x").val()是非常不同的事情,除非它恰好x是之前呼叫$("#x").
jQueryval回傳的唯一時間undefined是您在一個空集上呼叫它(這意味著id="x"當您這樣做時 DOM 中沒有元素$("#x"))。執行此操作的簡單方法是獲取值,然后進行檢查:
const val = x.val(); // Or `= $("#x").val()`, whatever is the one you actually want
w = typeof val !== "undefined" ? val.slice(3,5) : 0;
但是請注意,您w在一種情況下分配了一個字串,而在另一種情況下分配了一個數字。通常,您最好保持一致,要么始終使用字串,要么始終使用數字。
uj5u.com熱心網友回復:
在JavaScript中這兩個值undefined和空字串被認為falsy并將評價為假如果用作布爾變數。您可以使用此行為創建帶有一些括號的非常簡單的空檢查。
w = ($('#x').val() || '').slice(3,5) || 0;
此代碼將首先$(...).val()使用邏輯或操作 ( ||)向您的操作添加未定義/空安全檢查。因此,如果找不到值,則將回傳一個空字串。
完成此操作后,切片將應用于值或空字串。如果切片的結果是空字串,則0回傳a 。
請注意,在您的初始示例中,您還嘗試對變數進行尋址,x而不是使用$('#x'). 除非您首先分配var x = $('#x').
uj5u.com熱心網友回復:
考慮以下。
$(function() {
var w;
$("#btn").click(function() {
var x = $("#x").val();
w = (x !== undefined || x.length >= 4 ? x.slice(3, 5) : "0");
console.log(w);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<input type="text" id="x"> <button id="btn">Go</buton>
</div>
這個檢查是x被undefined或如果字串的長度足夠長的切片。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360023.html
標籤:javascript 查询
上一篇:如何添加1個React組件的JS狀態變數以用于其他組件?
下一篇:如何在Vue中的函式之間共享變數
