2017-03-08 63 views
1

就拿這樣的:每次爲什麼在函數中每次更改後都存儲多個對象?

$('select#submit_model').on('change', function(){ 

    model_object = {}; 
    console.log(model_object); 

}); 

爲什麼控制檯登錄一個額外的對象我選擇的變化和功能的火災?例如,在第一次選擇它之後,選擇記錄Object {}後,在第三個對象{}對象{}對象{}之後選擇記錄對象{}對象{},等等。

我想知道這是因爲我有條件選擇輸入和數據填充依賴於用戶選擇,但每個「更改」功能後,一個空數組被添加在我的對象(類似問題)之前 - 然後我的函數在進行「更改事件」後可能會中斷,因爲它試圖讀取一個對象,但前面有空的數組(我可以看到記錄到控制檯)。

我需要清理還是清除我的對象?爲什麼會發生?

感謝您的回答。

+1

put'model_object = {};'on on()'之外並添加'var' –

+0

是否有能夠重新運行整個腳本,包括片段的第一行(例如,片段的片段用'.html()'插入的標記?)?重複可能表明「change」事件處理程序被綁定了多次,並且對於事件的每次發生它都被稱爲相同的次數。 –

+0

我認爲你是對的 - 問題是,這是所有包裹在另一個onchange事件,這似乎與我的例子搞砸了。謝謝你的幫助。 – Notorious

回答

2

我相信你在on()裏面有更多的代碼,除了你所顯示的內容。

你必須糾正你的問題如下圖所示: -

var model_object = {}; 
$('select#submit_model').on('change', function(){ 

    //do your stuff with model_object 

    console.log(model_object); 

}); 

例子: -

var model_object = {}; 
 
$('select#submit_model').on('change', function(){ 
 
    model_object['selected_value'] = $(this).val(); 
 
    console.log(model_object); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<select id="submit_model"> 
 
    <option>one</option> 
 
    <option>two</option> 
 
    <option>three</option> 
 
</select>

注: - 在你的代碼的新實例(對象)在每次選擇框值發生更改時都會創建。

+1

謝謝你的例子,你是對的,在我的代碼中,這是包裝在另一個變化事件(我的錯誤)。這似乎在搞砸事情。感謝您的回答,並幫助我意識到自己的錯誤。 – Notorious

+0

@Notorious非常樂​​意幫助你,並感謝你的謙虛的評論。:) :) –

相關問題