0

我试图从函数节点(node-red)获取运行时值(msg.payload)并将其提供给模板节点(node-red)以根据输入显示适当的图像。我使用了下面的代码,但图像不会根据输入的选择而改变。下面是代码。请看一下并向我提供一些见解或需要进行哪些更改才能使其正常工作。

<html> 
  <head> 
     <script type="text/javascript"> 
        function displayImage() { 
          var j=parseInt({{payload}});
          document.getElementById("img").src = images[j]; 
        }

        function startTimer() { 
          setInterval(displayImage,3000); 
        } 

        var images = []; 
        images[0] = "image1.jpg"; 
        images[1] = "image2.jpg";
        images[2] = "image3.jpg";
    </script>
  </head> 
  <body onload="startTimer()">
     <img id="img" src="image1.jpg"/>
  </body> 
</html>
4

2 回答 2

1

使用 console.log(message) 并检查:

  1. {{payload}} 参数应该是您预期的整数
  2. J参数的值,赋值后,应该是0-2之间的整数
于 2015-09-16T14:00:24.660 回答
0

您正在处理NodeRED。了解有效负载参数的最简单方法是使用调试节点(深绿色节点)并将其附加到与模板节点相同的输出。然后,您将很快看到它是由什么制成的。您的有效负载很可能是 JSON 对象。像这样的东西:

 { "name" : "Peter",
   "color" : "Blue",
   "image" : "2"
  }

...或类似的。

然后,您只需更改该内容{{ }}以反映 JSON 对象中具有您感兴趣的数字的变量。例如:

     {{payload.image}}

仔细检查您的功能节点。如果它没有以 return 语句结束(通常是return msg),那么您根本不会有任何输入。

于 2015-09-17T02:39:10.577 回答