添加变量到javascript函数不起作用

时间:2017-04-11 18:28:55

标签: javascript jquery

我正在制作一个票务系统的小仪表板概述,该系统在侧面运行一个小图表。此图表通过jqx图表呈现。渲染本身工作正常,但它的工具提示让我有些头疼。



$(document).ready(function() {

  var over = <?php echo '100'; ?>;
  var totaal = <?php echo '400'; ?>;

  $('#bar-gauge-uren').jqxBarGauge({

    colorScheme: "scheme04",
    values: [over],
    max: [totaal],
    relativeInnerRadius: 0.8,
    tooltip: {

      visible: true,
      formatFunction: function(over, totaal) {

        var realVal = parseInt(over);
        var totaalVal = parseInt(totaal);
        alert(totaalVal);
        return ('Totaal aantal uren: ' + totaalVal + ' <br/>Price Index:' + realVal);
        
      },
    }
  });
});
&#13;
&#13;
&#13;

我正在尝试访问我的函数2变量。 totaal变量和over变量。 over变量工作正常,在概述中显示得很好,但totaal变量不是。我试图提醒它,但它返回0,而它在图形渲染中被调用时工作正常(它在条形图上显示400总计,因为我的红色条仅填充到100看到图像)

bar totaal is filled to 400, but tooltip aint working

我不确定我做错了什么。我是否在函数中传递了我的变量错误?

4 个答案:

答案 0 :(得分:3)

问题是formatFunction函数还传入了一个具有相同名称的变量。它会影响同名的任何其他变量。

示例:

&#13;
&#13;
var x = 10;
function f() {
  console.log(x); // 10
}

function g(x) {
  console.log(x); // Whatever was passed to g
}

f();
g(123);
&#13;
&#13;
&#13;

如果要捕获外部变量,请从totaal定义中删除formatFunction或将其命名为其他内容。

formatFunction: function(over) {
    ...
}

formatFunction: function(over, anotherVariableName) {
    ...
}

答案 1 :(得分:0)

之前转换为int,

 $(document).ready(function (){

        var over = <?php $num = "100"; echo (int)$num; ?>;

        var totaal = <?php $num = "400"; echo (int)$num; ?>;

        $('#bar-gauge-uren').jqxBarGauge({

            colorScheme: "scheme04", values: [over], max: [totaal],  relativeInnerRadius: 0.8, tooltip: {

                visible: true, formatFunction: function (over, totaal){

                    var realVal = parseInt(over);

                    var totaalVal = parseInt(totaal);

                    alert(totaalVal);

                    return ('Totaal aantal uren: ' + totaalVal +' <br/>Price Index:' + realVal);
                },

            }

        });

    });

答案 2 :(得分:0)

&#34;价值观&#34;属性是指将绘制的量规中的每个弧。 因此,拥有值:[over]将为您绘制一个弧形,就像在您的图像中填充红色,与“#”结束时的比例相等。变量值。 但是为了知道在弧线内绘制多少红色,你需要一系列的值,因此&#34; max&#34;定义最大边界的属性。

为每个悬停的弧调用formatFunction。 第一个参数将是实际值 - &#34; over&#34;,第二个值将是数组内的索引。 因此,具有函数(over,totaal){...}将类似于具有函数(value,index){...}。 所以&#34; totaal&#34;将变为0,这是&#34; over&#34;的指数在&#34;值内&#34;阵列。

规格可用here

答案 3 :(得分:0)

您必须将两个变量传递给函数:)

&#13;
&#13;
Dim lastIndex As Integer = txtRTB.Text.Length - 1
While lastIndex > -1
  lastIndex = txtRTB.Text.Substring(0, lastIndex).LastIndexOf(search)
  If lastIndex > -1 Then
    txtRTB.Select(lastIndex, search.Length)
    txtRTB.SelectedText = search & controlText & replace
  End If
End While
&#13;
$('#Working').click(
function(over, totaal) {
  var over = '100';
  var totaal = '400';
  var realVal = parseInt(over);
  var totaalVal = parseInt(totaal);
  alert ('Totaal aantal uren: ' + totaalVal + ' Price Index:'           + realVal);
});

var over = '100';
var totaal = '400';

$('#notWorking').click(
function(over, totaal) {
  var realVal = parseInt(over);
  var totaalVal = parseInt(totaal);
  alert ('Totaal aantal uren: ' + totaalVal + ' Price Index:'           + realVal);
});
&#13;
#Working {
  height: 20px;
  width: 20px;
  background-color: green;
}
#notWorking {
  margin-top: 30px;
  height: 20px;
  width: 20px;
  background-color: red;
}
&#13;
&#13;
&#13;