簡體   English   中英

為什么不能在Javascript的同一函數范圍內使用變量?

[英]Why can't I use a variable in same function scope in Javascript?

我正在嘗試在Chart.js的選項中使用legendTemplate。

我有這個:

var item1 = 5;
var item2 = 10;

function handle_chart_data(data) {
                window.item1 = data[0];
                window.item2 = data[1];

                var data = [
                {
                    value : window.item1,
                    color : "#FF0000",
                    label : "Item1"
                },
                {
                    value : window.item2,
                    color : "#5E5E5E",
                    label : "Item2"
                },
                ];

                options = {
                    segmentShowStroke: false,
                    animateRotate: true,
                    animateScale: false,
                    percentageInnerCutout: 50,
                    //legendTemplate: "<% for (var i=0; i<5; i++ ) { data.value } %>"
                }

                var ctx = document.getElementById("dgraph").getContext("2d");
                var myChart = new Chart(ctx).Doughnut(data, options);
                document.getElementById('js-legend').innerHTML = myChart.generateLegend();
                }
}

HTML是這樣的:

<div class="graph">
                            <canvas id="dgraph" width="300" height="200"></canvas>                            
                            <div id="js-legend" class="chart-legend"></div>
                        </div>

CSS如下:

.chart-legend li span{
    display: inline-block;
    width: 12px;
    height: 12px;
    margin-right: 5px;
}

.graph {
    float:left;
    width: 100%; 
    height: 100%;
}

但是,當我取消注釋legendTemplate的內容時,會出現數據的未捕獲參考錯誤。 我在想這是某種范圍錯誤。

Java語言范圍使我無休止,因為我來自C / C ++ / Python背景,並且它極具直覺。 對我來說,“數據”的范圍與“選項”的范圍相同,因此“選項”應該能夠看到“數據”,但事實並非如此。 我到底在做什么錯?

最終,我真正想要實現的是刪除圖例上的煩人子彈(上面編寫的當前代碼無法實現此目的),但是我想了解在我看來這是一個微不足道的錯誤從相同級別(都在同一函數內)的options變量內看到數據變量。

在不輸入功能的情況下使用方括號會改變范圍嗎? 與方括號相比,方括號對范圍的影響是否不同?

在循環中,嘗試使用data [i] .value。 數據在代碼中是一個數組,但是您嘗試引用它,就好像它具有一個屬性一樣,只是因為它是一個對象數組而沒有。 您還需要i <data.length,否則將獲得更多異常。

實際上,我最初看到的錯誤要多得多,因為字符串文字很奇怪,盡管這可能是粘貼錯誤?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM