2011-12-04 67 views
23

我嘗試設置id4在下面的代碼:如何通過javascript設置CodeMirror編輯器的值?

<div id="id1"> 
    <div id="id2"> 
     <div id="id3"> 
      <textarea id="id4"></textarea> 
     </div> 
    </div> 
</div> 

通過使用這個JavaScript命令:

document.getElementById('id4').value = "..."; 

而這個命令:

document.getElementById('id3').getElementsByTagName('textarea')[0].value = "..."; 

但沒有任何工程。

更新:

textarea被CodeMirror編輯器所取代。我如何爲它設定價值?

非常感謝您的幫助!

回答

41

自3.0版本發佈以來,實現這一點的方式略有改變。它現在是這樣的:

var textArea = document.getElementById('myScript'); 
var editor = CodeMirror.fromTextArea(textArea); 
editor.getDoc().setValue('var msg = "Hi";'); 
+0

什麼是myScript **? – Avinash

+1

它是要轉換爲CodeMirror編輯器的HTML元素的ID。 –

1

你有代碼應該工作。最有可能的解釋是這個元素在你運行時不存在。如果是這樣的解決方案,其一是:

  • 移動的JS這樣的元素被創建後出現(如以之前</body>)的JS的
  • 延遲執行,直到元素已創建(例如,通過將它移動到您指定爲onload事件處理函數的函數)
+0

它們的存在!但id4是強大的編輯器 - 但在我編寫的html代碼中。 – Dmitry

+5

「一個強大的編輯器」?這表明你已經運行了一些其他的JS,它用一些圖形小部件替換了textarea。如果是這樣,您需要閱讀該小部件的API文檔以瞭解如何以編程方式更改其值。 (這突出顯示了提供減少的測試用例的重要性,該用例實際上證明了這個問題)。 – Quentin

+0

你如何檢查這個腳本不起作用?你檢查視覺效果或檢查新的textarea的價值? –

6

我喜歡示例。試試這個:

CodeMirror.fromTextArea(document.getElementById(id), { 
     lineNumbers: true 
    }).setValue("your code here"); 
1

CodeMirror〜4.6.0你可以做到這一點,假設你有一個codemirror對象:

var currentValue = myCodeMirrorObject.cm.getValue(); 
var str = 'some new value'; 
myCodeMirrorObject.cm.setValue(str); 
相關問題