parseInt returns 不是数字 (NaN)
parseInt returns Not a Number (NaN)
我制作了一个 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>
问题是,当我在 Chrome 上 运行 时,它给了我一个输出 "NaN"
.
我知道这个问题已经有人问过了,但我没有找到满意的答案。
你没有理由使用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);
});
});
<!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>
我制作了一个 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>
问题是,当我在 Chrome 上 运行 时,它给了我一个输出 "NaN"
.
我知道这个问题已经有人问过了,但我没有找到满意的答案。
你没有理由使用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);
});
});
<!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>