Javascript:.value未定义(也涉及NodeJs)

时间:2018-04-02 21:50:50

标签: javascript node.js express

因此,在我的节点中,我会执行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

2 个答案:

答案 0 :(得分:2)

您的<p>没有value属性。使用innerHTML

x =  document.getElementsByClassName("c")[1].innerHTML

答案 1 :(得分:-2)

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

  1. 标记的位置
  2. 确保将脚本标记放在html的底部,以确保在调用脚本之前完全呈现上述元素。如果脚本在带有类&#34;加密&#34;的元素之前运行已加载,变量&#39; x&#39;将是空的。

    1. 类&#34;加密&#34;
    2. 的元素数量

      虽然我没有看到任何关于课程的元素&#34;加密&#34;在你的例子中,你试图设置变量&#39; x&#39;到索引1(第二个位置)的数组中的元素。如果您使用类&#34;加密&#34;少于两个元素,则尝试选择索引1将是未定义的。如果你试图用#34; crypto&#34;选择第一个元素,请使用&#34; var x = document.getElementsByClassName(&#34; crypto&#34;)[0] .value& #34;代替。

      1. 班级的存在&#34;加密&#34; 我看到你列出了一个带有&#34; c&#34;的元素,虽然没有类和#34;加密&#34;。如果您尝试选择带有&#34; c&#34;的元素,请使用&#34; var x = document.getElementsByClassName(&#34; c&#34;)[0] .value&#34;代替。