質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

640閲覧

ローカル変数をグローバル変数にしたい

Arthur11

総合スコア10

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2023/01/08 11:57

前提

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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2023/01/08 12:41

グローバル変数にするのはいいですが、そうやってなにをしようとしてるんでしょうか。 あなたが思ってるようにはなりませんよ
Arthur11

2023/01/08 13:05

ここに書いてあるとある変数をローカル変数からグローバル変数にして この下にある別スクリプトの処理に使いたいと考えております。 async/awaitの関数を宣言していない、別のコードでは上手く動作していたため、 グローバル変数にしたら行けると思い、質問している次第なのですが 私はJavascriptが未熟なために分からないのですが、あなたが思ってるようにはならないとはどういう意味でしょうか?
hoshi-takanori

2023/01/08 13:12

「この下にある別スクリプトの処理」が実行されるタイミングで、そのグローバル変数に中身が入ってるとは限らないってことかと…。
y_waiwai

2023/01/08 13:19

> async/awaitの関数を宣言していない、別のコードでは上手く動作していたため、 そこではどういうふうにグローバル変数にしてるんでしょう
Arthur11

2023/01/08 13:21

グローバル変数ってプログラム内ならどこでも参照できると思っていたのですが違うのでしょうか? 実際、async/awaitの関数を宣言していない、別のコードではグローバル変数の受け渡しはできていました。 上記のコードのローカル変数内のnetworkには中身が入っているのは確認していたため、ローカル変数からグローバル変数に変えれば行けないかな?と思っていた次第です。 下のスクリプトの処理ではグローバル変数で受け渡しできていたのですがこの方法ではダメでしょうか?
Arthur11

2023/01/08 13:23

普通に const network = new vis.Network(container, data, options); としただけですが
y_waiwai

2023/01/08 13:47

なら、そのうまくいくコードとうまくいかないコードを提示して、どうすればうまくいくのか、を質問すればどうでしょうか。
guest

回答2

0

自己解決

何もつけないで変数を定義したらグローバル変数にできました
お騒がせしました

投稿2023/01/08 13:50

Arthur11

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ChatGPT

1グローバル宣言を使用する 2ローカル変数をグローバル変数にするには、変数を定義する前に「global」キーワードを使用します。 3 4例: 5 6def func(): 7global x 8x = 10 9 10モジュールを使用する 11モジュールを使用することで、ローカル変数をグローバル変数のように使用することができます。モジュール内の変数は、モジュール内のすべての関数で参照できるようになります。 12 13例: 14 15module.py 16 17x = 10 18 19def func(): 20print(x) 21 22main.py 23 24import module 25 26module.func() # 10 27 28クラスを使用する 29クラスを使用することで、ローカル変数をグローバル変数のように使用することができます。クラス内の変数は、クラス内のすべてのメソッドで参照できるようになります。 30 31例: 32 33class MyClass: 34x = 10 35 36def func(self): 37print(self.x) 38 39obj = MyClass() 40obj.func() # 10

投稿2023/01/08 13:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問