
実現したいこと
https://github.com/snym-yt/VisualPMusic
このリポジトリのindex.htmlを編集し,ボタンによって「ブロック追加」の部分で読み込むファイルを切り替えたいです.
具体的には.
日本語選択をした際には
HTML
1 <script src="blocks/js/play_block2.js"></script> 2 <script src="generators/play2.js"></script> 3 4 <script src="blocks/js/random_block.js"></script> 5 <script src="generators/random.js"></script> 6 7 <script src="blocks/js/custom_test_block.js"></script> 8 <script src="generators/custom_test.js"></script>
英語を選択した際には
HTML
1 <script src="blocks/js/gauss_block2.js"></script> 2 <script src="generators/gauss2.js"></script> 3 4 <script src="blocks/js/weibul_block2.js"></script> 5 <script src="generators/weibul2.js"></script> 6 7 <script src="blocks/js/randwalk_block.js"></script> 8 <script src="generators/randwalk.js"></script>
のみを読み込むようにしたいです.
つまり押したボタンによって見えるブロックが変わってほしいです.
のようになってほしいです.
ボタンはこのサイトの一つ目のデモで示されているような,二者択一のものにしたいと考えております.
代替案
ボタンでいつでも変更できるようなものではなく,ページを開いた時に「日本語」か「英語」を選択するポップアップを表示し,選択されたものに応じて読み込むファイルを変更する,というような形式でも問題ないと考えております.
行なったこと(pushせずに開発を行なっているので,リポジトリで見れない可能性あり)
先述したボタンとは異なり,通常のよく見るボタンで「日本語」と「英語」をそれぞれ作成し,次のようなスクリプトを用いてボタンを押したら対応するリストに入れたものをを読み込ませようとしたのですが,押しても対応するものが読み込まれていませんでした.(index.html
の対応する部分のファイル読み込みはコメントアウトしています)
JavaScript
1function setLanguage(lang) { 2 // 言語別のスクリプトのリストを定義 3 const scripts = { 4 ja: [ 5 "blocks/js/play_block2.js", 6 "generators/play2.js", 7 "blocks/js/random_block.js", 8 "generators/random.js" 9 ], 10 en: [ 11 "blocks/js/custom_test_block.js", 12 "generators/custom_test.js", 13 "blocks/js/gauss_block2.js", 14 "generators/gauss2.js", 15 "blocks/js/weibul_block2.js", 16 "generators/weibul2.js", 17 "blocks/js/randwalk_block.js", 18 "generators/randwalk.js" 19 ] 20 }; 21 22 // 言語別にスクリプトを読み込む 23 const scriptList = scripts[lang]; 24 if (scriptList) { 25 scriptList.forEach(script => { 26 const scriptElement = document.createElement('script'); 27 scriptElement.src = script; 28 document.body.appendChild(scriptElement); 29 }); 30 } 31}
HTML
1 <!-- ブロック追加 --> 2 <!-- <script src="blocks/js/play_block2.js"></script> 3 <script src="generators/play2.js"></script> 4 5 <script src="blocks/js/random_block.js"></script> 6 <script src="generators/random.js"></script> 7 8 <script src="blocks/js/custom_test_block.js"></script> 9 <script src="generators/custom_test.js"></script> 10 11 <script src="blocks/js/gauss_block2.js"></script> 12 <script src="generators/gauss2.js"></script> 13 14 <script src="blocks/js/weibul_block2.js"></script> 15 <script src="generators/weibul2.js"></script> 16 17 <script src="blocks/js/randwalk_block.js"></script> 18 <script src="generators/randwalk.js"></script> -->
追記
エラー内容
Uncaught TypeError: window.markdownit is not a function at script.js:64:33 blockly_compressed.min.js:1030 Ignoring non-existent field Note No. in block play Blockly.Xml.domToBlockHeadless_ @ blockly_compressed.min.js:1030 blockly_compressed.min.js:1030 Ignoring non-existent field during in block play Blockly.Xml.domToBlockHeadless_ @ blockly_compressed.min.js:1030 blockly_compressed.min.js:1324 Uncaught TypeError: Cannot read properties of undefined (reading 'call') at Blockly.Generator.blockToCode (blockly_compressed.min.js:1324:268) at Blockly.Generator.workspaceToCode (blockly_compressed.min.js:1322:246) at myUpdateFunction (script.js:26:33) at Blockly.Workspace.fireChangeListener (blockly_compressed.min.js:893:446) at Blockly.Events.fireNow_ (blockly_compressed.min.js:1250:203) 3blockly_compressed.min.js:1074 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD 2blockly_compressed.min.js:1324 Uncaught TypeError: Cannot read properties of undefined (reading 'call') at Blockly.Generator.blockToCode (blockly_compressed.min.js:1324:268) at Blockly.Generator.workspaceToCode (blockly_compressed.min.js:1322:246) at myUpdateFunction (script.js:26:33) at Blockly.Workspace.fireChangeListener (blockly_compressed.min.js:893:446) at Blockly.Events.fireNow_ (blockly_compressed.min.js:1250:203)
CDN
https://cdnjs.com/libraries/markdown-it
ここにmarkdownのCDNの最新バージョンが見れる.



回答1件
あなたの回答
tips
プレビュー