parseInt返回非数字(NaN)

问题描述 投票:0回答:1

我制作了一个IDE(带有<textarea>和CodeMirror),看起来像这样:enter image description here

并且在左侧,有一个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>

问题是,当我在Chrome上运行它时,输出为"NaN"enter image description here我知道已经问过这个问题,但是我没有找到满意的答案。

javascript jquery html codemirror
1个回答
1
投票

没有理由让您使用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);
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.