基礎的Javascript入門

分享常見的 Javascript / jQuery 語法, 內容索引:

填入內容:

$(selector).val('new_value');

Q:想請問自動選擇張數的javascript要怎麼寫呢?
A:用 $(selector).val(張數); 也有複雜一點的寫法,先取到 select tag 下的 option, 使用和 checkbox 一樣的設定屬性的方法, 讓指定的 option 的屬性為 selected.

進階用法,請參考:設定張數為指定張數或最大可以支援張數
https://ddddext.max-everyday.com/script/javascript-advanced/#ticket_number

取得內容:

your_value = $(selector).val();

網頁重新整理:

location.reload();

設定與取得目前網址:

指定網址到新的 URL:

location.href = new_url;

讀取 location.href 就可以知道目前網址。

填入html:

$(selector).html('new_html');

取得html:

your_html = $(selector).html();

checkbox 全選:

全選有很多方法,

解法1:

$('input[type=checkbox]:not(:checked)').each(function() {
    $(this).click();
});

說明:如果要全不選,就是把 :not() 拿掉就可以了

解法2:

$('input[type=checkbox]').each(function() {
    $(this).prop('checked', true);
});

說明:如果要全不選,就是把 true 換成 false 就可以了

radio 選取:

解法同 checkbox, 一樣可以使用 click() 或 prop() 來處理。

例如:

$(selector).prop('checked', true);

點擊:

$(selector).click();

移除 element:

這個滿實用的,可以讓花花的網頁變精簡有效率,語法:

$(selector).remove();

例如:

$("footer").remove();

讓 <footer> tag 移除。

element 是否為 disabled

語法:

$(selector).prop("disabled");

一般情況應該傳回 false, 當被 disabled 會傳回 true;

這裡如果是使用 .attr(“disabled”) 會變很奇怪,是傳回實際 disabled 這個屬性的內容值,當該 element 沒有 disabled attribue 時,回傳 undefined.

計時器

延遲了某段時間 (單位為毫秒) 之後,才去執行對應的程式碼,不斷循環。用法:

setInterval(() => {
    // your-code-here
}, 200);

如果有指定變數給計時器,例如:

var assignInterval = setInterval(() => {
    // your-code-here
}, 200);

想要把計時器停下來,可以使用:

if (assignInterval) clearInterval(assignInterval);

延遲了某段時間之後執行

延遲了某段時間 (單位為毫秒) 之後,才去執行對應的程式碼,只執行一次。用法:

setTimeout(() => {
    // your-code-here
}, 200);

字串轉換為以十進位表示的整數

parseInt() 函式能將輸入的字串轉成整數。使用的範例:

console.log(parseInt('123'));
// 123 (default base-10)
console.log(parseInt('123', 10));
// 123 (explicitly specify base-10)
console.log(parseInt('   123 '));
// 123 (whitespace is ignored)
console.log(parseInt('077'));
// 77 (leading zeros are ignored)
console.log(parseInt('1.9'));
// 1 (decimal part is truncated)
console.log(parseInt('ff', 16));
// 255 (lower-case hexadecimal)
console.log(parseInt('0xFF', 16));
// 255 (upper-case hexadecimal with "0x" prefix)
console.log(parseInt('xyz'));
// NaN (input can't be converted to an integer)

電腦的世界,有分「字串」與「數字」,所以針對搶票「張數」的判斷,要先把字串轉成數字,才能正確的判斷內容的大小。

字串取代

在 javascript 的世界,是 str.replace(舊字串,新字串); 就可以替換掉舊字串的內容為新字串,但是只有第一個,這個是件很特別的事情。

實際上要套用下面語法,才會全部取代:

area_keyword = area_keyword.toLowerCase().replace(/,/g,"");

舉例來說,要移除字串裡的逗號,直接用 "," 是只有第一個逗號會被取代。要改用 /,/g

toLowerCase() 是變成小寫,這樣關鍵字比對,會比較不會出問題。

Q:為什麼要要全轉成小寫,還有去除所有逗號?
A:因為價格常常會有 3,000 與 3000 二種寫法,去掉逗號比較不會出問題。