我制作了一个IDE(带有<textarea>
和CodeMirror),看起来像这样:
并且在左侧,有一个div
,其中包含行计数器。所以我想做的是获取最后的行号(上图中的12)。这是我的代码:
$(document).ready(function() {
$(document).keydown(function() {
let element = document.getElementsByClassName("CodeMirror-linenumber");
element = element.item(element.length - 1);
escape(element);
let num = "";
num = parseInt(element);
console.log(num);
});
});
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="array.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.32.0/codemirror.min.css"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.52.2/codemirror.min.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.52.2/mode/xml/xml.min.js"></script>
</head>
<body>
<textarea id="editor"></textarea>
<script>
var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("editor"), {
mode: "xml",
htmlMode: true,
lineNumbers: true
});
</script>
</body>
</html>
没有理由让您使用escape(element)
。实际上,无论如何都已弃用它。您正在做的只是将元素编码为某种不需要的十六进制字符串。
您想要的是简单地访问元素的escape(element)
属性,并使用innerText
或更好的parseInt(element.innerText)
,unary plus operator获得行号:
+element.innerText
$(document).ready(function() {
$(document).keydown(function() {
let element = document.getElementsByClassName("CodeMirror-linenumber");
element = element.item(element.length - 1);
console.log(+element.innerText);
});
});