Может ли codemirror использоваться в нескольких текстовых областях?
Can codemirror использоваться на более чем одном textarea? Я использую много textareas, которые генерируются динамически.
<script type="text/javascript">
var editor = CodeMirror.fromTextArea('code', {
height: "dynamic",
parserfile: "parsecss.js",
stylesheet: "codemirror/css/csscolors.css",
path: "codemirror/js/"
});
</script>
Я бы предпочел установить класс в textarea, чтобы подключить его к codemirror. Возможно ли это? Другой способ решения этой проблемы - установить несколько идентификаторов. Код выше устанавливает идентификатор " код " для подключения к codemirror.
4 ответов
вы можете сделать несколько звонков в CodeMirror.fromTextArea
в "Codemirror-ify" несколько текстовых областей.
если вы хотите несколько текстовых областей с одинаковыми параметрами, оберните Codemirror.fromTextArea
вызовите функцию, например:
function editor(id)
{
CodeMirror.fromTextArea(id, {
height: "350px",
parserfile: "parsexml.js",
stylesheet: "css/xmlcolors.css",
path: "js/",
continuousScanning: 500,
lineNumbers: true
});
}
затем вы можете применить его к вашей переключателей, как:
editor('code1');
editor('code2');
может быть полезно кому-то, прикрепить его к нескольким текстовым областям с помощью html-класса:
<textarea class="code"></textarea>
<textarea class="code"></textarea>
<textarea class="code"></textarea>
<script type="text/javascript">
function qsa(sel) {
return Array.apply(null, document.querySelectorAll(sel));
}
qsa(".code").forEach(function (editorEl) {
CodeMirror.fromTextArea(editorEl, {
lineNumbers: true,
styleActiveLine: true,
matchBrackets: true,
theme: 'monokai',
});
});
</script>
пожалуйста, напишите причину, если вниз проголосовали..!
попробуй это:
<script>
var js_editor = document.getElementsByClassName("js_editor");
Array.prototype.forEach.call(js_editor, function(el) {
var editor = CodeMirror.fromTextArea(el, {
mode: "javascript",
lineNumbers: true,
styleActiveLine: true,
theme: 'duotone-light',
lineNumbers: true
});
// Update textarea
function updateTextArea() {
editor.save();
}
editor.on('change', updateTextArea);
});
</script>
<textarea class="js_editor"></textarea>
<textarea class="js_editor"></textarea>
<textarea class="js_editor"></textarea>
попробуйте этот код
function getByClass(sClass){
var aResult=[];
var aEle=document.getElementsByTagName('*');
for(var i=0;i<aEle.length;i++){
/*foreach className*/
var arr=aEle[i].className.split(/\s+/);
for(var j=0;j<arr.length;j++){
/*check class*/
if(arr[j]==sClass){
aResult.push(aEle[i]);
}
}
}
return aResult;
};
function runRender(type){
var aBox=getByClass("code_"+type);
for(var i=0;i<aBox.length;i++){
//alert(aBox[i].innerHTML);
//var editor = CodeMirror.fromTextArea(document.getElementById("code_javascript"), {
var editor = CodeMirror.fromTextArea(aBox[i], {
lineNumbers: true,
mode: "text/x-csrc",
keyMap: "vim",
matchBrackets: true,
showCursorWhenSelecting: true,
theme:"blackboard",
});
}
};
runRender('javascript');
runRender('c');
runRender('java');
runRender('bash');