2017-04-11 82 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>