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

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

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

HTMLで用いる<button>タグです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1327閲覧

入力した数値を図形に反映

ripan

総合スコア3

button

HTMLで用いる<button>タグです。

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/11/10 15:35

図形の縦横に数値を入力すると、図形のサイズに反映されるように動かしたいのですが、reloadを使うとページごと更新されてしまいます。ボタン出なくても、自動反映でもかまいません。

数式の埋め込み方が違うのか反映してくれません。

どなたかお優しい方教えていただける方いらっしゃいましたら、よろしくお願い致します。

<form action="cgi-bin/formmail.cgi" method="post"> <p> 縦:<input type="number" name="tate" size="40" size="40" min="1" max="100"> </p> <p> 横:<input type="number" name="yoko" size="40" size="40" min="1" max="100"> </p>
</form>
<br/> <input type="button" value="更新" onclick="koushin1()"> <body onload="draw()"> <canvas id="pattern1" width="1000" height="500"></canvas> <script> function draw() { drawPattern1(); function drawPattern1() { var canvas = document.getElementById('pattern1'); if (canvas.getContext) { var ctx = canvas.getContext('2d'); ctx.strokeRect(20, 20, 'yoko1*4.5, tate1*4.5); **// (20,20,入力値*4.5,入力*4.5)** ctx.strokeRect(500, 20, 'yoko2*4.5','tate2*4.5); // 上同様 } function koushin1() { location.reload(); } } </script> </body>

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

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

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

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

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

ripan

2021/11/11 16:11

図形のサイズを大小変化させたいのですが、2つの図形をそれぞれ変更させたいです。 反映図形 1. □ 2.□ 入力欄 1. 縦 50 2.縦 80 1. 横 50 2.横 80 のようなイメージです。
guest

回答1

0

ベストアンサー

少し修正してみました。こんな感じでしょうか?

html

1<body onload="draw()"> 2<p> 3左側の図形のサイズ: 4縦:<input type="number" id="tate1" size="40" size="40" min="1" max="100" value="50"> 5横:<input type="number" id="yoko1" size="40" size="40" min="1" max="100" value="80"> 6</p> 7<p> 8右側の図形のサイズ: 9縦:<input type="number" id="tate2" size="40" size="40" min="1" max="100" value="50"> 10横:<input type="number" id="yoko2" size="40" size="40" min="1" max="100" value="80"> 11</p> 12<p> 13<input type="button" value="更新" onclick="koushin1()"> 14</p> 15<canvas id="pattern1" width="1000" height="500"></canvas> 16 17<script> 18function draw() { 19 drawPattern1(); 20} 21 22function drawPattern1() { 23 var canvas = document.getElementById('pattern1'); 24 if (canvas.getContext) { 25 var ctx = canvas.getContext('2d'); 26 ctx.clearRect(0, 0, canvas.width, canvas.height); 27 var yoko1 = document.getElementById('yoko1').value; 28 var tate1 = document.getElementById('tate1').value; 29 var yoko2 = document.getElementById('yoko2').value; 30 var tate2 = document.getElementById('tate2').value; 31 32 ctx.strokeRect(20, 20, yoko1 * 4.5, tate1 * 4.5); // (20,20,入力値*4.5,入力*4.5) 33 ctx.strokeRect(500, 20, yoko2 * 4.5, tate2 * 4.5); // 上同様 34 } 35} 36 37function koushin1() { 38 draw(); 39 40} 41</script>

<実行結果>
https://jsfiddle.net/cx20/4p5q7uvg/
イメージ説明

投稿2021/11/10 19:01

編集2021/11/13 11:12
cx20

総合スコア4646

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

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

ripan

2021/11/13 11:15

本当にありがとうございます! このような動き方にしたかったので、とても助かりました。
cx20

2021/11/13 11:23

以下は参考情報です。主な修正箇所になります。 ・「name="tate"」 ⇒ 一意に要素を識別したい場合は name より id で指定した方が良いです。例「id="tate1"」 ・「□size="40"」 ⇒ 全角スペースが含まれていた為、半角スペースに変更しました。 ・「'yoko2*4.5'」 ⇒ これだと単なる文字列が出力されます。一旦、変数に代入して計算する必要があります。 ・function koushin1() {   location.reload();  } ⇒ これだとページ全体がリロードされてしまいます。   再描画するには draw() を呼び出せば良いです。その際、前回の内容をクリアする必要があるので、clearRect() を使用しています。
ripan

2021/11/14 14:32 編集

ありがとうございます。 ちなみに、 ctx.clearRect(0, 0, canvas.width, canvas.height); こちらのcanvas.widthとcanvas.heightはどことリンクした値になっているかはわかるでしょうか。
cx20

2021/11/13 15:53

> canvas.widthとcanvas.heightはどことリンクした値 ログ出力してもらえれば分かるかと思います。 console.log(canvas.width + "," + canvas.height);
ripan

2021/11/14 14:33

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問