簡體   English   中英

有沒有辦法在調試JavaScript時更改變量值?

[英]Is there a way to change variable values while debugging JavaScript?

我在這段代碼上有一個斷點(使用Firebug):

if (validator.formValidate([dom.forumid]))

即使我的dom.forumid無效,如何調用formValidate()返回false ,我如何跳過此驗證部分並進入if子句? 那我怎么能讓它回歸true呢?

我在考慮修改JavaScript,但我不知道是怎么做的。

截至今日(Chrome 67),您只需雙擊“范圍”部分右側的任何變量,即可實時編輯。

在此輸入圖像描述

在Firebug中,我通過在watch輸入字段中輸入一個賦值來完成此操作

  • 分配新值
  • 分配一個返回我期望的值的新函數

這也適用於Chrome~33(剛剛測試過)execpt:一個必須進入控制台的分配(實際上也可以在Firefox中使用,但使用手表面板更快:)。

在Firebug中,您必須編輯並重新保存在每個中斷時輸入到輸入中的賦值。

當然,替換該函數將阻止代碼在進一步運行時正常運行。 為了避免這種情況,可以將原始值保存到window._savedFnX左右,然后再次分配保存的函數/值。 但我認為這是一種解決方法,從一次又一次地挽救一個代碼到達目的地。 我經常意識到有一個糟糕的情況,然后我想繼續(雖然代碼不會)測試其余的代碼。

看看這些截圖:

代碼背景

在截圖中, photo是一個包含以下代碼的實例:

{
   ...
   _loaded: false, // set to true on some condition
   ...
   isLoaded: function(){
       return this._loaded;
   },
   ...
}

方法isLoaded()將在示例中替換為始終返回true。 :)

螢火

(適用於Firebug~1.12)

  • 在斷點處停下來
  • 轉到控制台
  • 分配函數,返回您想要的值到范圍內的變量(或可訪問) [ORANGE]

[BLUE]框突出顯示isLoaded()返回的值以及替換函數返回的值。

Firebug的屏幕截圖顯示了具有替換功能的手表面板

(適用於Chrome~34.0)

注意:在Chrome中,您還可以編輯源代碼並重新運行修改后的版本。

  • 在斷點處停下來
  • 轉到控制台
  • 分配函數,返回您想要的值到范圍內的變量(或可訪問) [ORANGE]
  • (刷新以查看結果) [GREEN]

[BLUE]框突出顯示isLoaded()返回的值以及替換函數返回的值。

Chome控制台的屏幕截圖顯示了具有替換功能的控制台和具有新返回值的監視面板

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM