tag:crieit.net,2005:https://crieit.net/boards/qa-javascript/feed 「JavaScriptの質問をしたり答えたりする掲示板」の投稿 - Crieit Crieitで「JavaScriptの質問をしたり答えたりする掲示板」ボードに投稿された最近の投稿 2023-02-06T13:58:48+09:00 https://crieit.net/boards/qa-javascript/feed tag:crieit.net,2005:PublicArticle/57be2d5cbb7f9c3eed092f16525e64fa 2023-02-06T13:35:07+09:00 2023-02-06T13:58:48+09:00 https://crieit.net/boards/qa-javascript/57be2d5cbb7f9c3eed092f16525e64fa 現在のWEBサイトが文字や画面全体の縮小拡大ができない様になっているが、なぜ縮小拡大ができない... <p>現在のWEBサイトが文字や画面全体の縮小拡大ができない様になっているが、<br /> なぜ縮小拡大ができないのかを知りたい(調査したい)</p> <p>【詳細】<br /> 図書館に置いてあるタッチパネル式の本の検索サイトの様なものになります。(または登記簿謄本や住民票を検索、書類発行をタッチパネルで依頼するサイトの様な)<br /> 画面サイズに合った固定ページでボタンを押すと次の画面に遷移する形式になります。(スクロールや縮小拡大機能がない)</p> <p>【環境】<br /> XHTML、CSS、javascript</p> <p>【背景】<br /> 現在のWEBサイトをタブレット端末で使える様にする際、タブレットでも縮小拡大ができない様にしたい。その際に、現状の縮小拡大ができない仕様がどの要因で実現されているのかを把握したい。</p> <p>【推測】<br /> ①CSS,javascrptで縮小拡大ができない様にするコードがある<br /> ②画面サイズ設定を1つだけにしている場合、そもそも縮小拡大ができない</p> <p>もし①の場合は、<br /> どの関数でできるか知りたいです。</p> nao228o tag:crieit.net,2005:PublicArticle/086f382bf8c47aa5225392a165bd3906 2022-09-03T05:32:12+09:00 2022-09-03T05:32:12+09:00 https://crieit.net/boards/qa-javascript/086f382bf8c47aa5225392a165bd3906 replitで、discordのbotを常時可動させたいのですが、たまにclient.logi... <p>replitで、discordのbotを常時可動させたいのですが、たまにclient.login(token);が動かなくなってしまいます。<br /> <a target="_blank" rel="nofollow noopener" href="https://replit.com/talk/ask/Discordjs-bot-will-not-login-to-client-user-why/112374">これ</a>で解決したいのですが、リッスンするにはどうすればいいですか?</p> SigumaRoot tag:crieit.net,2005:PublicArticle/0ba47015d8cda1080703c5adbfb2964e 2022-04-24T16:55:01+09:00 2022-04-24T17:33:42+09:00 https://crieit.net/boards/qa-javascript/0ba47015d8cda1080703c5adbfb2964e Javascript を node.js で書いて実行させるコードを作り、それを chrome... <p>Javascript を node.js で書いて実行させるコードを作り、それを chrome 等のブラウザで実行させる方法はどういったものがありますか?</p> <p>というのは、ちょっと漠然としすぎているかもしれません。</p> <p>例えば、https リクエストして、response.body をファイルに保存するという一連の処理をブラウザの Javascript だけで動作させるには、どういう方法がありますか?</p> tomato tag:crieit.net,2005:PublicArticle/9cebd0b701c190ea02b95e2749e733a0 2022-02-16T15:16:45+09:00 2022-02-16T15:16:45+09:00 https://crieit.net/boards/qa-javascript/9cebd0b701c190ea02b95e2749e733a0 GoogleドライブにてJPGデータをGoogleドキュメント化しております。1データずつなら... <p>Googleドライブにて<br /> JPGデータをGoogleドキュメント化しております。<br /> 1データずつならGoogleドキュメント化できるのですが<br /> 複数あるので</p> <p>function myConvertToDocument() {<br /> var id = "Googleフォルダ"<br /> var source_folder = DriveApp.getFolderById(id);<br /> var target_files = source_folder.getFiles();<br /> var dest_folder = DriveApp.getFolderById(id);</p> <pre><code>while(target_files.hasNext()) { var file = target_files.next(); convertToDocument(file, dest_folder); } </code></pre> <p>}</p> <p>function convertToDocument(file, folder) {<br /> options = {<br /> title: file.getName(),<br /> mimeType: MimeType.GOOGLE_DOCUMENT,<br /> parents: [{id: folder.getId()}]<br /> };<br /> Drive.Files.insert(options, file.getBlob())<br /> }</p> <p>こちらのスクリプトを実行したのですが<br /> JPGデータはJPGデータのまま吐き出されます。<br /> 改良方法がわかりません。どなたかよろしくお願いいたします。</p> Anonymous tag:crieit.net,2005:PublicArticle/d2488230be87803ee8f87ffe3fcee731 2021-11-11T23:53:26+09:00 2021-11-11T23:53:26+09:00 https://crieit.net/boards/qa-javascript/d2488230be87803ee8f87ffe3fcee731 ページ上の 2021年11月11日 10:00 という文字列を2021/11/11 10:00... <p>ページ上の 2021年11月11日 10:00 という文字列を<br /> 2021/11/11 10:00:00 という形に変換したいのですが<br /> JavaScriptで記述するにはどうすれば良いのでしょうか?</p> <p>また、この数字を参照して<br /> new Date('2021/11/11 10:00:00');<br /> という記述が完成するようにしたいのです。</p> <p>お分かりの方是非ご教授くださいm(__)m</p> ぼうちゃん tag:crieit.net,2005:PublicArticle/21ca5a534e97ccc5ba8bcea030cd10f6 2021-10-29T13:04:13+09:00 2021-10-29T13:04:13+09:00 https://crieit.net/boards/qa-javascript/21ca5a534e97ccc5ba8bcea030cd10f6 querySelectorAllで、部分一致を含んだ形で要素の取得を試みているのですが、変数を... <p>querySelectorAllで、部分一致を含んだ形で要素の取得を試みているのですが、変数を渡すとうまくいきません。</p> <p>例えば、<br /> const elements = document.body.querySelectorAll("input[name^='Q1-']");<br /> console.log(elements.length)</p> <p>のように文字列を渡すと、正しく30 (個) と数えてくれます。</p> <p>が、<br /> const q_name = "Q" + this.num + '-'<br /> console.log(q_name) // 確認用<br /> const elements = document.body.querySelectorAll("input[name^=q_name]");<br /> console.log(elements.length)</p> <p>と変数を渡すと 0 (個) と表示されてしまいます。</p> <p>なぜなのでしょうか?<br /> 解決法がありましたら教えていただきたいです。</p> <p>よろしくお願いいたします。</p> Anonymous tag:crieit.net,2005:PublicArticle/0900ab9f0c7e1bae3207b566a20dabd0 2021-10-22T00:21:28+09:00 2021-10-22T00:21:28+09:00 https://crieit.net/boards/qa-javascript/0900ab9f0c7e1bae3207b566a20dabd0 JavaScript初心者です。visual studio codeでだるまさんがころんだのよ... <p>JavaScript初心者です。visual studio codeでだるまさんがころんだのようなゲームを作りたいのですが、やり方が全くわからないのでご教授お願いします。</p> <p>•やりたいこと<br /> ・鬼が振り向いた時に人が動いていたら、その時点でゲーム終了<br /> ・鬼が振り向いた時に人が止まっていたら、ゲーム続行<br /> ・鬼のところまで辿り着いたらクリア<br /> ・人はキーボードの何かしらのボタンで操作できるようにする</p> <p>よろしくお願いします。</p> Anonymous tag:crieit.net,2005:PublicArticle/abb223393a208dde4e7a9fe1c8762c66 2021-08-24T12:01:12+09:00 2021-08-24T12:01:12+09:00 https://crieit.net/boards/qa-javascript/abb223393a208dde4e7a9fe1c8762c66 JavaScript初心者です。簡単なアニメーションを作りたいのですが実装方法がわからず困って... <p>JavaScript初心者です。簡単なアニメーションを作りたいのですが実装方法がわからず困っています。</p> <p>・やりたいこと<br /> 4枚の画像が0.1秒毎にズームしながら切り替わり、0.5秒毎にズームしながら画像を3秒間表示する。</p> <p>説明が分かりにくくすみません。つまり、<br /> 1.png→2.png→3.png→4.png→1.png→2.png…の順で0.1秒ごとにパッパッパっと画像が切り替わって、一周して1.pngに戻ってきた時に3秒表示。またパッパっと切り替わって、一周して2.pngに来た時に3秒表示…みたいなものが作りたいです。</p> <p>ズームしながら0.1秒毎に切り替えまでは調べて分かりましたが、「0.5秒毎に3秒表示」の部分がつまっています。<br /> なんとなくsetTimeoutを使うんだろうということは分かるのですが書き方が分からず、ご教授頂けないでしょうか。<br /> 動きの部分はcssで行っています。また、フェードインと記載してますが実際はフェードではなく切り替わる感じにしています。</p> <p>html</p> <pre><code class="html"> <ul id="slide_wrapp"> <li class="slide_item"><img src="img/1.png" alt=""></li> <li class="slide_item"><img src="img/2.png" alt=""></li> <li class="slide_item"><img src="img/3.png" alt=""></li> <li class="slide_item"><img src="img/4.png" alt=""></li> </ul> </code></pre> <p>JavaScript</p> <pre><code class="js">function sliderStart() { const slide = document.getElementById('slide_wrapp'); //スライダー親 const slideItem = slide.querySelectorAll('.slide_item'); //スライド要素 const totalNum = slideItem.length - 1; //スライドの枚数を取得 const FadeTime = 1000; //フェードインの時間 const IntarvalTime = 100; //クロスフェードさせるまでの間隔 let actNum = 0; //現在アクティブな番号 let nowSlide; //現在表示中のスライド let NextSlide; //次に表示するスライド // スライドの1枚目をフェードイン slideItem[0].classList.add('show_', 'zoom_'); // 処理を繰り返す setInterval(() => { if (actNum < totalNum) { let nowSlide = slideItem[actNum]; let NextSlide = slideItem[++actNum]; //.show_削除でフェードアウト nowSlide.classList.remove('show_'); // と同時に、次のスライドがズームしながらフェードインする NextSlide.classList.add('show_', 'zoom_'); //フェードアウト完了後、.zoom_削除 setTimeout(() => { nowSlide.classList.remove('zoom_'); }, FadeTime); } else { let nowSlide = slideItem[actNum]; let NextSlide = slideItem[actNum = 0]; //.show_削除でフェードアウト nowSlide.classList.remove('show_'); // と同時に、次のスライドがズームしながらフェードインする NextSlide.classList.add('show_', 'zoom_'); //フェードアウト完了後、.zoom_削除 setTimeout(() => { nowSlide.classList.remove('zoom_'); }, FadeTime); }; }, IntarvalTime); } </code></pre> <p>CSS</p> <pre><code class="css">#slide_wrapp{ position: relative; overflow: hidden; padding: 0; width: 500px; } .slide_item{ opacity: 0; transform: scale(1); transition: opacity 0.01s linear, transform 1s linear; //秒数に注意 position: relative; z-index: 1; } .slide_item:not(:first-child){ position: absolute; top: 0; left : 0; } .slide_item.show_{ opacity: 1; } .slide_item.zoom_{ transform: scale(1.02); } .slide_item img{ display: block; //下に余白ができないように } </code></pre> <p>何卒よろしくお願いします。</p> Anonymous tag:crieit.net,2005:PublicArticle/5681e67dacd3ef27ae8dfc0f25c58755 2021-07-15T11:54:35+09:00 2021-07-15T11:54:35+09:00 https://crieit.net/boards/qa-javascript/5681e67dacd3ef27ae8dfc0f25c58755 自分で3日トライしたのですがエラーや出力されなかったりで少し困ってます。模範解答をいただけると... <p>自分で3日トライしたのですがエラーや出力されなかったりで少し困ってます。<br /> 模範解答をいただけると助かります。お願いします</p> <p>jsでいろんな国の時間を1秒おきに時間が更新されるようにしラジオボタンで画像と国の時間を変える<br /> htmlとcssを変えずにjava script内(script.js)だけを変える<br /> htmlとcssは②にあります。<br /> ラジオボタンを切り替えたときに、選択した国と時刻に切り替えたいのが1つ目で</p> <p>① 時差<br /> 日本/東京 ±0<br /> オーストラリア/キャンベラ +1時間<br /> インドネシア/ジャカルタ -2時間<br /> エジプト/カイロ -7時間<br /> イギリス/ロンドン -8時間<br /> アメリカ/ニューヨーク -13時間<br /> アメリカ/サンフランシスコ -16時間</p> <p>時間に合わせて表示される画像を入れ替え<br /> 午前4時~午前9時59分 asa.png<br /> 午前10時~午後3時59分 hiru.png<br /> 午後4時~午後6時59分 ban.png<br /> 午後7時~午後11時59分 yoru.png<br /> 午前0時~午前3時59分 sinya.png</p> <p>②<br /> JavaScript</p> <h1>jikan{ font-size: 32px; color:#FFFFFF;</h1> <p>background-color:#333333;<br /> padding:0px 8px; }<br /> 世界時計<br /> 現在の『<span id="basyo">日本/東京</span>』の時刻は<br /> <span id="jikan"></span>です<br /> <img id="pictur"src="chikyuu.png"width="260"height="280"alt=""></p> <div id="box"> 日本/東京 オーストラリア/キャンベラ インドネシア/ジャカルタ エジプト/カイロ イギリス/ロンドン アメリカ/ニューヨーク アメリカ/サンフランシスコ</div> Anonymous tag:crieit.net,2005:PublicArticle/e7dba2660a637b18baff5f38600dc223 2021-02-21T10:57:10+09:00 2021-02-21T10:57:10+09:00 https://crieit.net/boards/qa-javascript/e7dba2660a637b18baff5f38600dc223 はじめまして。現在、職場で貸与されているPCとスマホでデータのやり取り出来ないかと模索してます... <p>はじめまして。</p> <p>現在、職場で貸与されているPCとスマホでデータのやり取り出来ないかと模索してます。</p> <p>希望としてはスマホで作ったデータをPCにフォルダごとに入れたいと思っていますが、フォルダを作るところで躓いています。</p> <p>方法があればお知恵を貸していただけないでしょうか。<br /> よろしくお願いします。</p> <p>また会社のPC・スマホなのでjクエリー等使わず純粋な(?)javascriptで作ることは可能でしょうか</p> いせぢ tag:crieit.net,2005:PublicArticle/8ba99559e597a59addd845fe44328627 2021-02-14T16:05:09+09:00 2021-02-14T16:05:09+09:00 https://crieit.net/boards/qa-javascript/8ba99559e597a59addd845fe44328627 Uncaught TypeError: Cannot read property 'datas... <h2>Uncaught TypeError: Cannot read property 'dataset' of null になる理由</h2> <p>お世話になっております。前回はありがとうございました。<br /> 2回目の質問になります。<br /> 今回の質問はコードが長いのでためらいましたが、どうしても自力では理解できず質問させていただきました。</p> <p>現在TodoMVCというTodoアプリのサンプルサイトを参考に勉強しています。<br /> <a target="_blank" rel="nofollow noopener" href="https://todomvc.com/examples/vanillajs/">https://todomvc.com/examples/vanillajs/</a><br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/tastejs/todomvc/tree/gh-pages/examples/vanilla-es6/src">https://github.com/tastejs/todomvc/tree/gh-pages/examples/vanilla-es6/src</a><br /> 質問の内容はエラーになる理由なのですが、エラー自体は解決できています。<br /> しかし、そのコードでなぜエラーが解決できるのかがわからず質問させていただきました。<br /> エラーの内容はこちらです。</p> <pre><code>Uncaught TypeError: Cannot read property 'dataset' of null at _itemId (view.js:7) at HTMLInputElement.<anonymous> (view.js:247) at HTMLUListElement.dispatch(helpers.js: 44) </code></pre> <p>問題の箇所は<code>view.js</code>にある<code>bindEditItemSave</code>と<code>bindEditItemCancel</code>の★の部分です。<br /> これらが参照している<code>view.js</code>の<code>_itemId</code>関数では<code>element</code>の親要素(またはさらにその親要素)の<code>dataset</code>を取得しているのに<br /> その子要素である<code>element</code>(編集中の<code>input</code>)に<code>dataset</code>を指定しないと上記のエラーになってしまいます。<br /> この理由が理解できずに苦戦しています。<br /> このエラーの理由をご教授いただけますでしょうか。</p> <h4>考えたこと</h4> <p>バブリングとキャプチャリングが関係しているのかと推察して<br /> <code>stopPropagation</code>を使ってみましたがダメでした。</p> <p>Todoアイテムを追加し編集中の状態のHTMLです</p> <pre><code class="html"><section style="display: block;" class="main"> <input id="toggle-all" class="toggle-all" type="checkbox"> <label for="toggle-all">Mark all as complete</label> <ul class="todo-list"> <li data-id="1613277309944" class="editing"> /* このdatasetを取得しているはず */ <div class="view"> <input class="toggle" type="checkbox"> <label>テスト</label> <button class="destroy"></button> </div> <input class="edit"> /* 編集中のinput */ </li> </ul> <footer class="footer"> <span class="todo-count">1 item left</span> <ul class="filters"> <li> <a href="#/" class="selected">All</a> </li> <li> <a href="#/active">Active</a> </li> <li> <a href="#/completed">Completed</a> </li> </ul> <button class="clear-completed" style="display: none;">Clear completed</button> </footer> </section> </code></pre> <p>helpers.js</p> <pre><code class="js">export function $on(target, type, callback, capture) { target.addEventListener(type, callback, !!capture); } /** * セレクタに一致するすべての要素のイベントにハンドラを付けます。 */ export function $delegate(target, selector, type, handler, capture) { const dispatch = (event) => { const targetElement = event.target; const potentialElements = target.querySelectorAll(selector); let i = potentialElements.length; while (i--) { if (potentialElements[i] == targetElement) { handler.call(targetElement, event); } } } $on(target, type, dispatch, !!capture); } </code></pre> <p>view.js</p> <pre><code class="js">// TodoアイテムのIDを10進数の整数値にパースする関数 // ★親要素のdatasetを取得しているはずなのに子要素のdatasetを作らないとエラーになる const _itemId = element => { return parseInt(element.parentNode.dataset.id || element.parentNode.parentNode.dataset.id, 10); }; export default class View { /** * Todoリストの編集中アイテムがフォーカスを失った時にhandlerを実行 */ bindEditItemSave(handler) { $delegate(this.$todoList, 'li .edit', 'blur', ({ target }) => { if (!target.dataset.iscanceled) { // ② ★これが無いとエラーになってしまう handler(_itemId(target), target.value.trim()); } }, true); $delegate(this.$todoList, 'li .edit', 'keypress', ({ target, keyCode }) => { if (keyCode === ENTER_KEY) { target.blur(); } }); } /** * Todoリストの編集中アイテムでESCキーが押された時にフォーカスを外しhandlerを実行 */ bindEditItemCancel(handler) { $delegate(this.$todoList, 'li .edit', 'keyup', ({ target, keyCode }) => { if (keyCode == ESCAPE_KEY) { target.dataset.iscanceled = true; // ①★これが無いとエラーになってしまう target.blur(); handler(_itemId(target)); } }); } } </code></pre> <p>controller.js</p> <pre><code class="js">export default class Controller { constructor(store, view) { this.store = store; this.view = view; view.bindEditItemSave(this.editItemSave.bind(this)); view.bindEditItemCancel(this.editItemCancel.bind(this)); } /** * エディットでアイテムを保存します。 */ editItemSave(id, title) { if (title.length) { this.store.update({ id, title }, () => { this.view.editItemDone(id, title); }); } else { this.removeItem(id); } } /** * アイテム編集モードをキャンセルします。 */ editItemCancel(id) { this.store.find({ id }, data => { const title = data[0].title; this.view.editItemDone(id, title); }); } } </code></pre> たしぎ@プログラミング tag:crieit.net,2005:PublicArticle/feec7a77d727ee4ca7624b159e8976f6 2021-01-27T05:48:12+09:00 2021-01-27T06:01:45+09:00 https://crieit.net/boards/qa-javascript/feec7a77d727ee4ca7624b159e8976f6 javascript超初心者です学校の課題で三段階ドロップダウンを作りたいのですが途中頭がこん... <p>javascript超初心者です<br /> 学校の課題で三段階ドロップダウンを作りたいのですが途中頭がこんがらがってしまい<br /> 三個目を表示する方法いただきたくご教示頂きたく。。。。</p> <p>以下コードです</p> <p>1段階目(メイン)のプルダウンメニュー<br /> <select class="mainselect"><br /> <option value="">メイン</option><br /> <option value="a">A</option><br /> <option value="b">B</option><br /> </select><br /> 2段階目(サブ)のプルダウンメニュー<br /> <select id="A" class="subbox"><br /> <option value="">サブ</option><br /> <option value="aa">A-A</option><br /> <option value="ab">A-B</option><br /> <option value="ac">A-C</option><br /> </select><br /> <select id="B" class="subbox"><br /> <option value="">サブ</option><br /> <option value="ba">B-A</option><br /> </select><br /> 3段階目(サブサブ)のプルダウンメニュー<br /> <select id="aa" class="subsubbox"><br /> <option value="">サブサブ</option><br /> <option value="aa1">A-A1</option><br /> </select></p> <p><script type="text/javascript"></p> <p>・ サブBOXを全て非表示にする<br /> var allSubBoxes = document.getElementsByClassName("subbox");<br /> for( var i=0 ; i<br /> allSubBoxes[i].style.display = 'none';<br /> }</p> <p>・ 全てのプルダウンボックスごとに処理<br /> var mainBoxes = document.getElementsByClassName('pulldownset');<br /> for( var i=0 ; i<br /> var mainSelect = mainBoxes[i].getElementsByClassName("mainselect");<br /> ・ メインのプルダウンメニュー<br /> var subSelect = mainBoxes[i].getElementsByClassName("subbox");<br /> ・サブのプルダウンメニュー<br /> mainSelect[0].onchange = function () {<br /> ・ 同じ親要素に含まれている全サブBOXを消す<br /> var subBox = this.parentNode.getElementsByClassName("subbox");<br /> ・ 同じ親要素に含まれる.subbox<br /> for( var j=0 ; j<br /> subBox[j].style.display = 'none';<br /> }<br /> ・ 指定されたサブBOXだけを表示する<br /> if( this.value ) {<br /> var targetSub = document.getElementById( this.value );<br /> ・「メインのプルダウンメニューで選択されている項目のvalue属性値」と同じ文字列をid属性値に持つ要素を得る<br /> targetSub.style.display = 'inline'<br /> }<br /> }<br /> });<br /> ・この後サブで選択したサブサブのみstyleのdisplayのをinlineにしたいのですがどうしたらいいでしょうか。。。<br /> </script></p> Anonymous tag:crieit.net,2005:PublicArticle/8d14bae6ea195d2ae5bcdeaebba6b48d 2021-01-22T19:39:45+09:00 2021-01-22T19:41:00+09:00 https://crieit.net/boards/qa-javascript/8d14bae6ea195d2ae5bcdeaebba6b48d Javascript初心者です。現在次のようなことがしたいのですが、コードが動かずどなたか知恵... <p>Javascript初心者です。<br /> 現在次のようなことがしたいのですが、コードが動かずどなたか知恵をお貸しくださると大変助かります。</p> <p>・カレンダーの日付(tdに含まれる文字(td class=calendar_td)をクリックした際に、とあるdiv(class=purposeselection)を可視化したい(現段階ではスタイルシートのvisibility=hiddenに設定)</p> <p>・作ってみたコード<br /> var purpose=document.getElementsByClassName("purposeSelection")<br /> document.addEventListener("click", function(e) {<br /> if(e.target.classList.contains("calendar_td")) {<br /> purpose.style.visibility='visible';<br /> }<br /> })</p> <p>ですが、動かずどこがいけないのやら、見当がつきません。。。<br /> 何卒よろしくお願いします。。。</p> いそおにい tag:crieit.net,2005:PublicArticle/1bd751441860fc4581a312c322fbe685 2020-12-16T17:21:32+09:00 2020-12-16T17:21:32+09:00 https://crieit.net/boards/qa-javascript/1bd751441860fc4581a312c322fbe685 首記の件、教えて頂きたく。下記ソースコードで花びらの一枚を作成しました。これを題名の通り花びら... <p>首記の件、教えて頂きたく。<br /> 下記ソースコードで花びらの一枚を作成しました。<br /> これを題名の通り花びらの角度を変えて複製する方法がありましたら教えて頂きたくお願い致します。</p> <p>イメージとして添付画像の様にしたいです。<br /> <a href="https://crieit.now.sh/upload_images/d782a4403a62e5f7b1a44a9c215c68055fd9c32c7a819.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d782a4403a62e5f7b1a44a9c215c68055fd9c32c7a819.png?mw=700" alt="image" /></a></p> <p>'use strict;'</p> <p>//init<br /> const canvas = document.getElementById('test');<br /> const context = canvas.getContext('2d');<br /> const WIDTH = $('#test').get(0).width = $(window).width();<br /> const HEIGHT =$('#test').get(0).height = $(window).height();</p> <p>//花びら(上)<br /> context.beginPath();<br /> context.moveTo(270,50);<br /> context.quadraticCurveTo(300, 50, 260, 150);</p> <p>context.moveTo(260,150);<br /> context.quadraticCurveTo(240, 165, 230, 150);</p> <p>context.quadraticCurveTo(210, 50, 230, 50);</p> <p>context.moveTo(230,50);<br /> context.lineTo(250,80);<br /> context.lineTo(270,50);<br /> context.lineWidth = 8;<br /> context.strokeStyle = 'rgb(255,204,255)';<br /> context.save();</p> <p>context.moveTo(260,150);<br /> context.quadraticCurveTo(240, 165, 230, 150);</p> <p>context.quadraticCurveTo(210, 50, 230, 50);</p> <p>context.moveTo(230,50);<br /> context.lineTo(250,80);<br /> context.lineTo(270,50);<br /> context.stroke();</p> Anonymous tag:crieit.net,2005:PublicArticle/915ac0b135695800fe566350ef246b17 2020-12-10T11:23:14+09:00 2020-12-10T11:23:14+09:00 https://crieit.net/boards/qa-javascript/915ac0b135695800fe566350ef246b17 題名の通り、値を変化させ続けることによってグラデーションの色を少しずつ変化させて、アニメーショ... <p>題名の通り、値を変化させ続けることによってグラデーションの色を少しずつ変化させて、アニメーションの様にしたいのですがうまくできません。<br /> やりたい事と教えて頂きたい事を分けていますが、合わせて教えて頂きたくお願い致します。</p> <p>・やりたい事<br /> 1.描画の白い部分(描画が見えない部分)を上から下に少しずつ移動させたい。<br /> 2.白い部分が通過したら、通過した場所の色が元に戻るようしたい。<br /> (下記ソースコード参照)</p> <p>・教えて頂きたい事<br /> 1.addColorのオフセット値を少しずつ変化させる<br /> 2.同様にrgbの値を少しずつ変化させる<br /> 変化させたい値を変数とインクリメントを使用するというのが基本的な方法だと思うのですが、うまくできないのでご教示お願い致します。</p> <p>下記は試みた事です。<br /> addColorStopの場合<br /> ・offset値が0,1単位の為、インクリメントが使用出来ない<br /> ・対策としてfor文を使用して0.1単位で増加させようとしたが、描画に変化はない(白い部分が移動しない)<br /> function drawFrame() {<br /> let grad = context.createLinearGradient(250,400,320,700);<br /> for(let i = 0; i<br /> grad.addColorStop(0.3, 'rgb(204,0,0');<br /> grad.addColorStop(i 'rgb(255,255,255)');<br /> grad.addColorStop(0.9, 'rgb(204,0,0');<br /> }<br /> ~~~~~~~~~~~~~~~~~~</p> <p>rgb値の場合<br /> ・同様に下記にて変数とインクリメントを使用するがエラーが出る<br /> rgb値は変数は使用出来ない?下記エラー参照<br /> エラー内容:Javascript.js:10 Uncaught DOMException: Failed to execute 'addColorStop' on 'CanvasGradient': The value provided ('rgb(x,0,0') could not be parsed as a color.<br /> (addColorStop'の実行に失敗しました:提供された値( 'rgb(x、0,0')を色として解析できませんでした。)<br /> x = 1;<br /> function drawFrame() {<br /> let grad = context.createLinearGradient(250,400,320,700);<br /> context.clearRect(0,0,WIDTH,HEIGHT);<br /> grad.addColorStop(0.3, 'rgb(x,0,0');<br /> grad.addColorStop(0.6, 'rgb(255,255,255)');<br /> grad.addColorStop(0.9, 'rgb(x,0,0');</p> <p>x = x++;</p> <p>~~~~~~~~~~~~~~~~</p> <p>ソースコード;</p> <pre><code> <script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script> </code></pre> Anonymous