鍍金池/ 問答/HTML/ 一個(gè)input值的奇怪問題

一個(gè)input值的奇怪問題

HTML代碼:

<form>
    標(biāo)題: <input type="text" name="title" id="demo1"/>
    <br><button id="myBtn">提交button</button>
</form>

JS代碼部分:

<script src="https://cdn.bootcss.com/jquery/2.2.1/jquery.min.js"></script>
<script>
var btn = document.getElementById('myBtn')
var title1 = $('#demo1')[0].value
btn.onclick = function (e) {
    console.log(title1)
    console.log($('#demo1')[0].value)
    console.log('clicked...')
    e.preventDefault()
}
</script>

一個(gè)很奇怪的問題,我在頁(yè)面上輸入aaa,在控制臺(tái)上console.log(title1)為什么是空的呢?而下面的console.log($('#demo1')[0].value)卻能正確現(xiàn)實(shí)數(shù)據(jù)?
如下:
圖片描述

想不明白,請(qǐng)各位幫忙看看,謝謝了!

回答
編輯回答
萌吟

因?yàn)轫?yè)面加載后就會(huì)按順序執(zhí)行你的代碼,當(dāng)執(zhí)行到

var title1 = $('#demo1')[0].value

這里時(shí),由于你還沒有輸入內(nèi)容,所以title1這個(gè)變量就是空字符串。

當(dāng)你在input中輸入值時(shí),title1并不會(huì)同步改變?。。?!所以你點(diǎn)擊后,title1還是那個(gè)空字符串。

額,還有個(gè)原因就是基本類型是保存值本身的,$('#demo1')[0].value是一個(gè)基本值,賦值給title1后,title1就不會(huì)變,除非再另外賦值。

所以如果你的代碼是這樣:

var titleNode = $('#demo1')[0]

在點(diǎn)擊事件內(nèi)打印titleNode.value是有用的,因?yàn)?code>titleNode保存了引用。

2017年9月2日 16:59