2017-09-27 25 views
0

我特林让文本输入与后续代码值的值:的document.getElementById( 'url_input')值未打印

var input = document.getElementById('url_input').value; 

document.getElementById("send_url").onclick = function(){ 
    console.log(input); 
} 

这并未不工作,但如果我改变像这样:

var input = document.getElementById('url_input'); 
document.getElementById("send_url").onclick = function(){ 
    console.log(input.value); 
} 

这两个有什么不同?为什么第一个不工作?

+0

请张贴您的HTML。 –

+0

存储值与读取值。 – epascarello

+0

请填写完整的html,但似乎是在输入值设置之前存储输入值 –

回答

1

这两者有什么不同?

在你的第一个例子,你复制价值为input

var input = document.getElementById('url_input').value; 

,然后反复地重新登录该值:

document.getElementById("send_url").onclick = function(){ 
    console.log(input); 
} 

的值复制到input没有按” t在inputHTMLInputElementvalue属性之间创建任何类型的正在进行的链接。它仅在该行代码行时将value的值复制到input中。

在你的第二个例子,你从HTMLInputElement每次所获得的价值:

var input = document.getElementById('url_input'); 
document.getElementById("send_url").onclick = function(){ 
    console.log(input.value); 
} 

在每一次点击,你问HTMLInputElement当前状态。请注意,input中的值在点击次数之间仍然不会发生变化;它是对url_input元素的引用,该元素是一个对象,并且该代码中的引用不会更改。对象(HTMLInputElement)的状态发生变化,并且您每次都要求其查看当前状态。

1

因为当你阅读.value时,它是那个时刻的价值。它不会在属性更改时更新变量。

所以,当你做

var input = document.getElementById('url_input').value 

如果存储在那个时刻和值是,将在该变量的值。