@hiroki_335577

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

javascriptの実行

解決したいこと

ここに解決したい内容を記載してください。
javascriptがうまく実行できないです。

該当するソースコード

ソースコードを入力
HTMl

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>test</title>
        <link rel="stylesheet" href="test.css">
      </head>
      <body>
        <div id="controls"> </div>
        <script> var controls = document.getElementById('controls');
        </script>

</body>
<script src="test.js"></script>
</html>

///////////////////////////////////////////////////////////


CSS

* { margin:0; padding:0; } 
html, body { width:100%; height:100%; overflow: hidden;} 
canvas { display:block; }
#controls {
  margin: 20px;
  position: absolute;
  top: 0; left: 0;
  color: white;

////////////////////////////////////////////////////////

javascript

let points = [];
let tickSpeed = 10;
let base = 180;
let numPoints = 10;
let maxTicks = 3000;
let ticks = 0;

function Point(x = random(width), y = random(height), a = random(PI)){
  this.x = x;
  this.y = y;
  this.a = a;
  this.dx = cos(a);
  this.dy = sin(a);
  this.hue = (random(100) + base)%360;
  this.color = color(this.hue, 100, 100, .01);
}

Point.prototype.update = function(){
  this.x += this.dx;
  this.y += this.dy;
  if (this.x < 0 || this.x >= width) this.dx *= -1;
  if (this.y < 0 || this.y >= height) this.dy *= -1;
  stroke(this.color);
  line(this.x, this.y, this.neighbor.x, this.neighbor.y);
}

function setup(){
  createCanvas();
  colorMode(HSB);
  windowResized();
  blendMode(ADD);
  strokeWeight(1.5);
}

function init(){
  points = [];
  base = random(360);
  ticks = 0;
  
  for (var i = 0; i < numPoints; i++) points.push(new Point());
  
  for (var i = 0; i < points.length; i++){
    let j = i;
    while(j == i) j = floor(random(points.length));
    points[i].neighbor = points[j];
  }
}

function draw(){
  if (ticks > maxTicks) return;
  for (var n = 0; n < tickSpeed; n++){
    for (var i = 0; i < points.length; i++){
      points[i].update();
    }
    ticks++;
  }
}

function mouseClicked(){
  windowResized();
}

function windowResized() {
  resizeCanvas(windowWidth, windowHeight);
  pixelDensity(1);
  clear();
  background(0);
  init();
}
0 likes

3Answer

初めて質問されているようなので、厳しいコメントに見えると思いますが、責めるつもりはないので、その点はご認識ください。。

javascriptがうまく実行できないです。

もう少し詳しく記載いただく必要があると思います。。

どうなってほしい、という期待結果と
今こうなってしまっている、という現状がない場合、回答者の方々が、コードのどこに原因がありそうか、検討をつけるのが大変です。

1つ目の回答にもある通り、ブラウザの開発者ツールも見て、何かエラーが表示されていないか、なども確認が必要かもしれませんね。

また、「上手く実行できない」の中身次第ですが、
どういった機能を持つ画面を作ろうとしてるのか、そのあたり情報は欲しいです。

コードがペーストしてあるだけでコード内のコメントも特にないので、解決に直結する回答を得られる可能性は低くなってしまうと思います。

5Like

Comments

  1. @hiroki_335577

    Questioner

    自分の記述不足大変失礼いたしました。
    皆さんのコメントを拝見して情報が足りなさすぎたなと反省しております。
    今回は実行できたコードを教えてくださった方がいたので、この先は自分で頑張ろうと思います。
    コメントしてして下さり、そしてお心遣いありがとうございました。
    もし次投稿することがありましたら今回頂いたアドバイスを生かして実行したい機能の情報も記述しようと思います。

他の回答者さんがおっしゃられているように、

  • どういうことをしたいか
  • 現在起きている現象
  • どういうことを試してみたか

というような情報を付け加えると、コードを見た人が状況を理解しやすくなると思います。

既に回答されている方々は、回答を出す前にこのことを伝えたかった、というのは理解しつつも、Qiitaで質問に答えてみたくて(初回答なんです!)うずうずしているので失礼します。

質問者さんのコードを見てみると、JavaScriptのコード内に登場していないのにも関わらず実行されている関数があるので、何かしら外部ライブラリを使っているように思えます。
そこで、windowResized()の関数内で実行されているresizeCanvas()について調べてみると、p5.jsで用意されている関数のようです。

しかし質問者さんのコードには、外部ライブラリを読み込むコードが入っていません(少なくとも投稿されている部分には)。
つまり、p5.jsのサイトでも示されているように、ローカルにライブラリのjsファイルをダウンロードしてそれを読み込むか、CDNを利用する必要があります。

CDNの場合は以下のコードをhtml内に追加するようです。headタグ内に追加した方が良いと思います(JavaScriptを読み込む順番の関係上)。

index.html
<script src="https://cdn.jsdelivr.net/npm/p5@[p5_version]/lib/p5.js"></script>

他にも何か「動かない」原因が残っているかもしれませんが、とりあえずライブラリの追加は必須事項だと思います。頑張ってください!

2Like

Comments

  1. 便乗で申し訳ないですが、下記のコードを追加したところ動きましたので
    ソースを貼っておきます。

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8">
            <title>test</title>
            <link rel="stylesheet" href="test.css">
          </head>
          <body>
            <div id="controls"> </div>
            <script>
                var controls = document.getElementById('controls');
            </script>
    
    </body>
    +<script src="https://cdn.jsdelivr.net/npm/p5@1.7.0/lib/p5.js"></script>
    <script src="test.js"></script>
    </html>
    

    CSSは恐らく添付ミスだと思いますが一応直したので貼っておきます。

    * { margin:0; padding:0; } 
    html, body { width:100%; height:100%; overflow: hidden;} 
    canvas { display:block; }
    #controls {
      margin: 20px;
      position: absolute;
      top: 0; left: 0;
      color: white;
    +}
    
  2. @hiroki_335577

    Questioner

    自分の記述不足大変失礼いたしました。
    拙い文章の中でもコード付きで回答をして頂きありがとうございます。
    この先は自分で頑張ろうと思います。

    ありがとうございました。

ブラウザの開発者ツールを見てエラーが出ているか否かぐらいのことは自分で調べてみたのでしょうか?

1Like

Comments

  1. @hiroki_335577

    Questioner

    自分の記述不足大変失礼いたしました。
    デベロッパーツール等での確認はしております。
    今回は実行できたコードを教えてくださった方がいたので、この先は自分で頑張ろうと思います。
    コメントしてして下さりありがとうございました。
    もし次投稿することがありましたら今回頂いたアドバイスを生かして投稿しようと思います。

Your answer might help someone💌