2017-10-15 72 views
0

我想提取我的表單輸入的值在javascript對象中,但值不會返回在console.log中,它不會返回文本。但是,當我在Chrome控制檯中定義精確的代碼(「var sub」)時,它可以正常工作並返回值。爲什麼我的javascript不工作?但與鉻控制檯配合

enter image description here

-------------------- HTML -------------------- ---

<div id="form2"> 
    <form action=""> 
     <h2>Where are you moving to?</h2> 
      <label for="">Collection</label> 
      <input id="lol" type="text"> 
      <label for="">Delivery</label> 
      <input type="text"> 
      <button type="button" name="button">Step 3</button> 
     </form> 
    </div> 

--------------的JavaScript -----------------------

var submit2 = document.querySelector(「#form2> form> button」);

var sub = document.querySelector(「#lol」)。value;

var customer = [];

submit2.addEventListener( 「點擊」,函數(){ 的console.log( 「點擊」);`` 的console.log(子); })

------- ----------------- Chrome控制檯-------------------- 點擊 style.js:6 sub 「」 var sub = document.querySelector(「#lol」)。value; 未定義 子 「ADSF」

回答

0

請記住,字符串是一個原始值和對象外,將作爲值,而不是引用傳遞(這裏https://snook.ca/archives/javascript/javascript_pass見說明)

當瀏覽器加載頁面,它會評估所有的命令:

var submit2 = document.querySelector("#form2 > form > button"); 
/* var submit2 = Dom reference object button */ 

var sub = document.querySelector("#lol").value; 
/* sub = fixed empty string (the initial value of the input when the page loads) */ 

var customer = []; 

submit2.addEventListener("click", 
function() { 
    console.log("clicked"); 
    console.log(sub); 
    /* when this function runs, sub.value evaluate the empty string of sub variable instead of get the new value property of #lol */ 
} 
) 

嘗試改變的對象,而不是價值的參考:

var submit2 = document.querySelector("#form2 > form > button"); 

    /* var sub = document.querySelector("#lol").value; */ 
    var sub = document.querySelector("#lol"); 
    /* sub = #lol DOM object reference */ 

    var customer = []; 

    submit2.addEventListener("click", 
function() { 
    console.log("clicked"); 
    /* console.log(sub); */ 
    console.log(sub.value); 
    /* sub.value= new string of #lol object */ 
} 
) 
+0

感謝您的回覆Marcelo。對不起,還沒有嘗試過你的答案,但我只是嘗試了一些事情,它在我把變量(var sub)放到函數的時候起作用了。任何想法,爲什麼這是? –

+0

@ADRai當瀏覽器加載它時,會檢查#lol值並將其作爲字符串放入子文件中。當click事件發生時,函數獲取字符串的空值,而不是詢問#lol –

+0

的當前值屬性。但值應該是一個字符串,因爲它的文本..也即使當我把它放在函數I仍然得到一個字符串,這是我想要的..但​​爲什麼我沒有得到我的原代碼中的字符串.. –

相關問題