JavaScript:.Value不确定(也涉及Nodejs)



所以在我的节点中我做一个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>

接着是bodyhead 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

我认为您遇到的问题可能是由于一些问题之一:

  1. 标签的位置

确保将脚本标签放在HTML的底部,以确保上述元素在调用脚本之前已完全渲染。如果脚本在加载类"加密"的元素之前运行,则变量'x'将为空。

  1. 类"加密"类的元素数量

虽然在您的示例中我看不到类"加密"类的任何元素,但您试图将变量'x'设置为index 1(第二位置(的数组中的元素。如果您的"加密"类别少于两个元素,那么尝试选择索引1的元素将不确定。如果您尝试选择使用" crypto"类的第一个元素,请使用" var x = document.getElementsbyclassName(" crypto"([0] .Value。

  1. "加密"班的存在我看到您列出了一个带有" C"类的元素,尽管没有类" Crypto"。如果您试图选择" c"类的元素,请使用" var x = document.getElementsbyclassName(" c"([0] .value"代替。

最新更新