我用一个带有分母变量的divison函数得到NaN

时间:2015-08-09 09:14:49

标签: javascript jquery

我是Java新手,我已经解决了这个问题几天了,我无法理解。 仪表返回NaN结果,并在开发控制台中显示以下错误:

  

:DOMException:无法在'Element'上执行'querySelectorAll':',:x'不是有效的选择器。 at Error(native)at htttp ... cantposthttp ... ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:5:28399   代码:12   消息:“无法在'元素'上执行'querySelectorAll':',:x'不是有效的选择器。”   名称:“SyntaxError”   stack:“错误:无法在'Element'上执行'querySelectorAll':'*,:x'不是有效的选择器。在错误(原生)↵在https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js:5:28399”    proto :DOMException   e:(e)   t:div   这个:窗口

守则:

    <script type='text/javascript'  src='https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>
    <script type='text/javascript' src='https://www.google.com/jsapi'></script>
    <script type='text/javascript'>
      // set your channel id here
      var channel_id = xxxxx;
  // set your channel's read api key here if necessary
  var api_key = 'xxxxxxx';
  // maximum value for the gauge
  //var max_gauge_value = 13;
  // name of the gauge
  var gauge_name = 'VPD';

  // global variables
  var chart, charts, data;

  // load the google gauge visualization
  google.load('visualization', '1', {packages:['gauge']});
  google.setOnLoadCallback(initChart);



  // display the data
  function displayData(point) {

    data.setValue(0, 0, gauge_name);
    data.setValue(0, 1, point);
    chart.draw(data, options);




  }


  // load the data
  function loadData() {
    // variable for the data point




    // get the data from thingspeak
    $.getJSON('https://api.thingspeak.com/channels/' + channel_id + '/feed/last.json?api_key=' + api_key, function(data) {

      // get the data point
      var t = data.field1;
      var h = data.field2;




      function myFunction(a) {


        return (a * 7.5)/(237.5 + a);
      }





      // if there is a data point display it
      if (t) {
        t = myFunction(t);

        displayData(t);

      }


      });
  }



  // initialize the chart
  function initChart() {


    data = new google.visualization.DataTable();
    data.addColumn('string', 'Label');
    data.addColumn('number', 'Value');
    data.addRows(1);

    chart = new google.visualization.Gauge(document.getElementById('gauge_div'));
    options = {width: 240, height: 240, majorTicks:["0","0.5","1","1.5","2","2.5","3","3.5","4"], max: 13, redFrom: 1.4, redTo: 13, yellowFrom:1, yellowTo:1.4, minorTicks: 5};

    loadData();

    // load new data every 15 seconds
    setInterval('loadData()', 15000);
  }
</script> 

感谢您的帮助!

马捷

3 个答案:

答案 0 :(得分:2)

错误消息

  

... / jquery / 1.9.1 / jquery.min.js:5:28399代码:12消息:“无法在'Element'上执行'querySelectorAll':',:x'不是有效的选择器。 “

是一只红鲱鱼。它来自jQuery代码中的错误。

我注意到了同样的消息,我在网上搜索了它。人们在各种不同的背景下抱怨它。

在我的情况下,我解决了实际问题,而这个jQuery bug仍然存在。

答案 1 :(得分:0)

检查您是否正确设置了变量channel_id,如果它的任何部分不是需要引号的数字(因为它是一个字符串)。

答案 2 :(得分:0)

好的我解决了这个问题,那就是数据记录器以字符串形式发送数据而不是数字,所以我将字符串转换为整数,现在它就可以了。

我改变了这个:

// get the data point
      var t = data.field1;
      var h = data.field2;

到此:

// get the data point
          var t = +(data.field1);
          var h = +(data.field2);