因此,在我的节点中,我会执行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
答案 0 :(得分:2)
您的<p>
没有value
属性。使用innerHTML
:
x = document.getElementsByClassName("c")[1].innerHTML
答案 1 :(得分:-2)
我认为您遇到的问题可能是由于以下问题之一:
确保将脚本标记放在html的底部,以确保在调用脚本之前完全呈现上述元素。如果脚本在带有类&#34;加密&#34;的元素之前运行已加载,变量&#39; x&#39;将是空的。
虽然我没有看到任何关于课程的元素&#34;加密&#34;在你的例子中,你试图设置变量&#39; x&#39;到索引1(第二个位置)的数组中的元素。如果您使用类&#34;加密&#34;少于两个元素,则尝试选择索引1将是未定义的。如果你试图用#34; crypto&#34;选择第一个元素,请使用&#34; var x = document.getElementsByClassName(&#34; crypto&#34;)[0] .value& #34;代替。