iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 6
0
自我挑戰組

前端菜焦阿日記系列 第 6

|D6| JS - `<select>` 取值

####### tags: 2019年鐵人賽JS

前言

因為不了解,寫多了很多不必要的程式啊!

範例

HTML

<select id="monthSelect" onchange="selectTime_mm()">
  <option value="">--請選擇月份--</option>
  <option value="01">01</option>
  <option value="02">02</option>
  <option value="03">03</option>
  <option value="04">04</option>
  <option value="05">05</option>
  <option value="06">06</option>
  <option value="07">07</option>
  <option value="08">08</option>
  <option value="09">09</option>
  <option value="10">10</option>
  <option value="11">11</option>
  <option value="12">12</option>
</select>

原本想法


需修改的觀念:

  • 以為 month3 可以接到 function 的 return 值,結果值是傳到 html 頁面的 onchange="selectTime_mm()" 去。
  • 這隻 js 檔放在 html 檔的 <head> 區,頁面還沒渲染完就讀到。
  • obj 裡的 month3 是 copy 第一行 month3 的 value(undefined) 到 object 裡。
var month3
function selectTime_mm(){
  let num_mm = document.getElementById('monthSelect').value
  //console.log(num_mm)
  return month3 = num_mm
  //console.log(typeof num_mm)
  //console.log(typeof month3)
}
month3 = selectTime_mm()
var obj = {
    month: month3,
    district: '東區'
}


以為改好了

var month3
var obj = {}
function selectTime_mm(){
  let num_mm = document.getElementById('monthSelect').value
  console.log(num_mm)
  month3 = num_mm
  console.log(typeof num_mm)
  console.log(typeof month3)
  obj = {year: month3 , district: '東區'};
}

修改後

觀念

  • getElementById(),取得當前 webpage 的狀態(都是 string)
  • parseInt() 將 string 轉整數
  • function 執行範圍只在 {} block 裡,onchange 事件觸發一次就執行一次,所以變數用const <感謝Chris勘誤>
  • 這隻 js 檔放在 html 檔的 <body> 區,頁面渲染完才讀到。
function selectTime_mm(){
const selectMonth = parseInt(document.getElementById('monthSelect').value)
let obj = {year: selectMonth, district: '東區'}
}

上一篇
|D5| CSS - Inline elements
下一篇
|D7| JS - Google Charts 統計圖表
系列文
前端菜焦阿日記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Chris
iT邦新手 4 級 ‧ 2018-10-21 21:07:04
<select id="monthSelect" onchange="selectTime_mm()">

頁面 onchange 觸發一次,執行一次。

mangoSu iT邦新手 5 級 ‧ 2018-10-22 12:40:35 檢舉

謝謝~會再表達清楚一點~
大哥是對的!

我要留言

立即登入留言