2017-04-11 74 views
0

我正在侧面运行一张图形的票务系统的一个仪表板概述。该图通过jqx图表呈现。渲染本身工作正常,但它的工具提示,让我有些头痛。将变量添加到javascript功能不起作用

$(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); 
 
     
 
     }, 
 
    } 
 
    }); 
 
});

我试图存取权限在我的功能2个变量。共变量和超变量。 over变量工作正常,在概览中显示得很好,但是变量变量不是。我试图警告它,但它返回0,而它在图形渲染中被调用时正常工作(它在条上显示400作为总数,因为我的红色条只填充到100查看图像)

bar totaal is filled to 400, but tooltip aint working

我不知道我做错了什么。我在函数中传递错误的变量吗?

回答

3

问题是formatFunction函数也传入一个名称相同的变量。它会影响同名的其他变量。

例子:

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

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

 
f(); 
 
g(123);

如果你想捕捉的外部变量,无论是从formatFunction定义或名称别的东西删除totaal

formatFunction: function(over) { 
    ... 
} 

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

我从功能上取下两个变量,它似乎做工精细。我是一个心脏的PHP scripter,所以我很困惑,不向函数添加一个变量,因此我认为我以错误的方式接近了这个函数。感谢您为我解决这个问题@Mike C – Dorvalla

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); 
       }, 

      } 

     }); 

    }); 
0

“值” 属性指的是在各计弧将被绘制。 所以有了这些值:[over]会在你的图像中绘制出一个弧形,与红色的“over”变量值成比例。 但是为了知道在这个圆弧里面绘制多少红色,你需要一个范围的值,因此定义了最大范围的“max”属性。

为每个悬停的弧调用formatFunction。 第一个参数将是实际值 - “over”,第二个值将是数组中的索引。 因此具有函数(over,totaal){...}将类似于函数(值,索引){...}。 所以“totaal”将变为0,它是“values”数组内“over”的索引。

的规格可here

0

你有两个变量传递到功能:)

$('#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); 
 
});
#Working { 
 
    height: 20px; 
 
    width: 20px; 
 
    background-color: green; 
 
} 
 
#notWorking { 
 
    margin-top: 30px; 
 
    height: 20px; 
 
    width: 20px; 
 
    background-color: red; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="Working"> Working </div> 
 
<div id="notWorking">notWorking</div>