【问题标题】:cannot access the row values of an object using javascript and ejs无法使用 javascript 和 ejs 访问对象的行值
【发布时间】:2015-01-27 19:09:04
【问题描述】:

我有一个 ejs 文件,如下所示

<!DOCTYPE html>
<html> 
<head> 
 <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
 <title>Google Maps Sensor  Markers</title> 
  <script src="http://maps.google.com/maps/api/js?sensor=false" 
      type="text/javascript"></script>
</head> 
<body>
<div id="map" style="width: 500px; height: 400px;"></div>
      <p id="demo"></p>
    <p id="pil"></p>
    <p id="rowc"></p>
 <script>
      function addZero(i) 
      { if (i < 10)
          { i = "0" + i;
            }
          return i;
      }
  var d = new Date(1382086394000);
  //var x = document.getElementById("demo");
  var h = addZero(d.getHours());
  var m = addZero(d.getMinutes());
  var s = addZero(d.getSeconds());
  document.getElementById("demo").innerHTML= h + ":" + m + ":" + s;       
  var myVar = <%- JSON.stringify(jsresult) %>; 
  var count= <%- rowcount %>       

document.getElementById("pil").innerHTML=  myVar.rows[0].sensor;
document.getElementById("rowc").innerHTML=  count;
 </script>
</body>
</html>

这给了我如下输出:

01:53:14

6

7

我试图通过执行迭代而不是使用访问从 myVar 获取传感器的值

   myVar.row[0].sensor , myVar.rows[1].sensor and so on...

所以我在上面的代码之间添加了这样的东西

 .
 .
 .

 var myVar = <%- JSON.stringify(jsresult) %>; 
  var count= <%- rowcount %>

  var arlene1= [];   
   for (var j=0; j<=count;j++)
   { arlene1[j] = myVar.rows[j].sensor ; 
   }  

 document.getElementById("pil").innerHTML=  myVar.rows[0].sensor;
document.getElementById("rowc").innerHTML=  count;

.
.
.

它现在只是抛出一个没有输出的空白页。

谁能解释一下这里出了什么问题?

我基本上是在尝试将所有 7 个传感器的值放入一个数组中,然后将它们呈现在 UI 上

调试器控制台显示如下错误:

【问题讨论】:

    标签: javascript arrays ejs embedded-javascript


    【解决方案1】:

    在最后一段代码中,您已将rowcount 分配给count 变量,但在for 循环中您尝试访问rowcount。在客户端评估 JavaScript 代码时,rowcount 未定义。尝试将其更改为:

    var myVar = <%- JSON.stringify(jsresult) %>; 
    var count= <%- rowcount %>; // 7
    
    var arlene1= [];
    
    // Iterate from 0 to 6
    for (var j = 0; j < count; j++)
    {
        arlene1[j] = myVar.rows[j].sensor; 
    }  
    
    document.getElementById("pil").innerHTML=  myVar.rows[0].sensor;
    document.getElementById("rowc").innerHTML=  count;
    

    【讨论】:

    • 我也尝试过这种方式。我忘了在这里更改代码。即使在给出计数或使循环运行 6 次而不是计数后,我仍然得到一个空白页
    • @MonicaThaneer:检查我的编辑——for 循环中也存在语法错误。您使用的是逗号而不是分号。
    • 我现在打印时间。但我仍然没有显示“pil”和“rowc”值。
    • 如果我删除循环,将显示“pil”和“rowc”值。但我想使用循环获取传感器的值:-|
    • 嗨,很抱歉没有回复 - 我睡着了!尝试使用 Google Chrome JavaScript 控制台查看加载页面时是否出现任何错误。在这种情况下,当存在不立即明显的讨厌的语法错误时,它真的很方便。这是一个很好的使用介绍:developer.chrome.com/devtools/docs/console
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 1970-01-01
    • 2019-08-28
    • 2019-10-24
    相关资源
    最近更新 更多