2015-12-07 26 views
0

我有一個JavaScript小部件,將顯示數據圖表..我有一個下拉框,讓用戶能夠更改主題。所以當用戶選擇一個主題時,它應該改變並向用戶顯示新的主題。爲改變事件現有的JavaScript代碼增加價值

部件代碼:

<script type="text/javascript"> 
new TradingView.widget({ 
    "width": 500, 
    "height": 400, 
    "interval": "1", 
    "timezone": "Etc/UTC", 
    "theme": "White", 
    "style": "2", 

}); 
</script> 

HTML/JS代碼

<select> 
    <option value="moonlight">Moon</option> 
    <option value="darkness">Dark</option> 
</select> 

<script> 
$(document).on('change','.theme',function(){ 
     alert(this.value); 
    }); 
</script> 

我如何獲得this.value添加到窗口小部件的JS代碼theme參數?

+0

您是否使用全局變量js插件? – deepakb

+0

@deepakb看起來像jQuery,並用'jQuery'標記。 – Jacob

回答

3

我想你應該從ARGS把新的widget代碼的功能和訪問theme

<script type="text/javascript"> 
function themeChanger(theme){ 
    var themeWidget = new TradingView.widget({ 
    "width": 500, 
    "height": 400, 
    "interval": "1", 
    "timezone": "Etc/UTC", 
    "theme": theme, 
    "style": "2", 

    }); 
    return themeWidget; 
} 

$(document).on('change','.theme',function(){ 
    var widget = themeChanger(this.value); 
    // do something with widget. 
}); 

</script> 
+0

真棒...它的作品 – LiveEn

+0

剛剛得到一個小問題..我添加了相同的不同小部件,但是當我從下拉列表中選擇一個選項,小部件加載就像在一個空白頁面,下拉不可見。 http://jsfiddle.net/livewirerules/3e9jaLku/5/可以請你看看那個小提琴並告訴我我在那裏做錯了什麼? – LiveEn

+0

它看起來正在用小部件替換身體中的所有東西。 – Jai

0

可以使用

var chartParams={ 
    "width": 500, 
    "height": 400, 
    "interval": "1", 
    "timezone": "Etc/UTC", 
    "theme": "White", 
    "style": "2", 

} 
new TradingView.widget(chartParams); 
$(document).on('change','.theme',function(){ 
    chartParams["theme"]=this.value 
    new TradingView.widget(chartParams); 
    });