所以在我的节点中我做一个API并将其发送到我的index.ejs
页面,例如
app.get("/", function (req, res) {
request("http://something/API", function (error, response, body){
if(!error && response.statusCode == 200) {
var result = JSON.parse(body) //Converts it into object
console.log(result)
res.render("home.ejs", {result:result});
}
})
})
现在在我的索引页面中,我做类似的事情
<% for ( var i= 0; i<result.length; i++ ) { %>
<table text-aling="left">
<tr>
<td> <%= i+1 %> </td>
<td> <p class="c"><%=result[i]["long"]%></p> (<%= result[i]["short"] %>) </td>
<td> <%= result[i]["price"] %> </td>
接着是body
和head tag
下方进行DOM操作的脚本。
<script type="text/javascript">
var x = document.getElementsByClassName("c")[1].value
console.log(x);
</script>
现在, Console.log(x)
说未定义(虽然它确实在我的前端显示了API调用结果。它是因为它是一个对象吗?或者我在这里缺少什么?如何在我的console.log
您的<p>
没有value
属性。使用innerHTML
:
x = document.getElementsByClassName("c")[1].innerHTML
我认为您遇到的问题可能是由于一些问题之一:
- 标签的位置
确保将脚本标签放在HTML的底部,以确保上述元素在调用脚本之前已完全渲染。如果脚本在加载类"加密"的元素之前运行,则变量'x'将为空。
- 类"加密"类的元素数量
虽然在您的示例中我看不到类"加密"类的任何元素,但您试图将变量'x'设置为index 1(第二位置(的数组中的元素。如果您的"加密"类别少于两个元素,那么尝试选择索引1的元素将不确定。如果您尝试选择使用" crypto"类的第一个元素,请使用" var x = document.getElementsbyclassName(" crypto"([0] .Value。
- "加密"班的存在我看到您列出了一个带有" C"类的元素,尽管没有类" Crypto"。如果您试图选择" c"类的元素,请使用" var x = document.getElementsbyclassName(" c"([0] .value"代替。