前提
JavaScriptでグラフを使たシステムを作っています。
実現したいこと
とあるローカル変数をグローバル変数にしたい。
方法はなんでも構いません
よろしくお願いいたします。
該当のソースコード
Javascript
1 <div id="network"></div> 2 <script type="text/javascript"> 3 (async() =>{ 4 try{ 5 const res1 = await fetch("nodes.json"); 6 const jsondata1 = await res1.json(); 7 const nodes = new vis.DataSet(jsondata1); 8 9 const res2 = await fetch("edges.json"); 10 const jsondata2 = await res2.json(); 11 const edges = new vis.DataSet(jsondata2); 12 const container = document.getElementById('network'); 13 14 const data = { 15 nodes: nodes, 16 edges: edges 17 }; 18 19 const options = {} 20 const network = new vis.Network(container, data, options); 21 //この上の変数をグローバル変数にしたい 22 network.on("oncontext", function(params) { 23 if (params.nodes.length == 1) { 24 const nodeId = params.nodes[0]; 25 const node = nodes.get(nodeId); 26 location.assign(node.image); 27 } 28 }); 29 network.on("click", function(params) { 30 const nodeId = params.nodes[0]; 31 if (nodeId) { 32 const nodeP = network.getPositions(nodeId); 33 const values = Object.values(nodeP); 34 for (const xy of values) { 35 network.moveTo({ 36 position: xy 37 }); 38 } 39 timeline.focus(nodeId); 40 } 41 }); 42 network.setOptions(options); 43 }catch (err){ 44 console.log(err); 45 return 46 } 47 })(); 48 </script>
グローバル変数にするのはいいですが、そうやってなにをしようとしてるんでしょうか。
あなたが思ってるようにはなりませんよ
ここに書いてあるとある変数をローカル変数からグローバル変数にして
この下にある別スクリプトの処理に使いたいと考えております。
async/awaitの関数を宣言していない、別のコードでは上手く動作していたため、
グローバル変数にしたら行けると思い、質問している次第なのですが
私はJavascriptが未熟なために分からないのですが、あなたが思ってるようにはならないとはどういう意味でしょうか?
「この下にある別スクリプトの処理」が実行されるタイミングで、そのグローバル変数に中身が入ってるとは限らないってことかと…。
> async/awaitの関数を宣言していない、別のコードでは上手く動作していたため、
そこではどういうふうにグローバル変数にしてるんでしょう
グローバル変数ってプログラム内ならどこでも参照できると思っていたのですが違うのでしょうか?
実際、async/awaitの関数を宣言していない、別のコードではグローバル変数の受け渡しはできていました。
上記のコードのローカル変数内のnetworkには中身が入っているのは確認していたため、ローカル変数からグローバル変数に変えれば行けないかな?と思っていた次第です。
下のスクリプトの処理ではグローバル変数で受け渡しできていたのですがこの方法ではダメでしょうか?
普通に
const network = new vis.Network(container, data, options);
としただけですが
なら、そのうまくいくコードとうまくいかないコードを提示して、どうすればうまくいくのか、を質問すればどうでしょうか。
![guest](/img/icon/icnUserSample.jpg)
回答2件
あなたの回答
tips
プレビュー