たった1日で基本が身に付く! JavaScript超入門 その4

DOM(Document Object Model:ドム)とは

DOMの仕様は以下の2点に集約される

  1. 文書をオブジェクトとして扱う
  2. 文書へのアクセスや操作の方法を定義

◆主なノード

  • 文書ノード:予約後[document]で扱う
  • 要素ノード
  • テキストノード
  • 属性ノード
  • 親ノード
  • 子ノード
  • 兄弟ノード

◆主な要素取得方法

document.getElementById

document.getElementsByTagName

document.getElementsByClassName 

 

CSSと組み合わせてClassでやるのが一般的なのかどうかも調べる。

たった1日で基本が身に付く! JavaScript超入門 その3

これが以前、間違えちゃうかと思ったけどあってるって言われた演算子か。

演算子 概要
== 等しければtrue
=== 型を変えずに等しければtrue
!= 等しくなければtrue
!== 型を変えずに等しくなければtrue

型を変えずに って衝撃やわ。

比較する際は、型を含めて比較する===演算子または!==演算子を使うようにしましょう。って当たり前田のクラや。

たった1日で基本が身に付く! JavaScript超入門 その2

var つけないとグローバル変数になる

◆主なデータ型

  • 文字列型
  • 数値型
  • 真偽型
  • 配列型
  • オブジェクト型:連想配列のことだって

◆主なオブジェクト

  • 組み込みオブジェクト:JavaScriptであらかじめ定義されている
  • ブラウザオブジェクト:ブラウザで取り扱える
  • DOMオブジェクト:HTMLの要素のアクセスができる

◆主な組み込みオブジェクト

  • String
  • Number
  • Boolean
  • Array
  • Object
  • Math
  • Date
  • JSON

で、ここからがポイントで

Sgtring~Objectまでがデータ型と対応していて、文字列型で変数宣言するとStringオブジェクトが持つプロパティやメソッドが利用できると。なんじゃそりゃ。適当な 気の利く言語やな。

 

◆主なブラウザオブジェクト。ブラウザオブジェクトはインスタンス化済み。下記のインスタンス名で直接呼べると。

  • Window:すべてのブラウザオブジェクトの親 [window]
  • Navifator:ブラウザ情報を管理 [navigator]
  • Location:URL情報を管理 [location]
  • History:閲覧履歴を管理 [history]

 

たった1日で基本が身に付く! JavaScript超入門 その1

HTML5の主なJavaScript API

  • Canvas 2D Context:2Dグラフィックの描画
  • Geolocation API:位置情報の取得
  • File API関連:ファイルやディレクトリの操作
  • Web Storage:データの保存
  • Indexed Databese API:key-value型のデータベース
  • WebSocket:双方向通信
  • Web Workers:バックグラウンド処理

サーバーサイドで動くnode.js

JavaScriptの役割

  1. Webアプリケーションの補助的な機能
  2. Ajaxを利用した通信処理
  3. HTML5APIを利用したWebアプリケーションを担う部分
  4. 上記以外の、Webアプリケーションの範囲を超えた部分

 

ID Manager にログインできない

以下にあるはずの、hogehoeg.idmファイルを正しい場所にコピーする

C:\Users\xxx\AppData\Local\VirtualStore\Program Files\idm\data

C:\Program Files\idm\data

 

ちなみに念の為、あった4ファイル全部コピーした。

無事にログインできた、めでたしめでたし。

たった1日で基本が身に付く! Androidアプリ開発超入門 総仕上げ

自分なりの改良含め一旦終わり。

package com.example.g.mybingo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Random;

public class MainActivity extends AppCompatActivity {
    //最大値
    private int maxNumer =10;
    private ArrayList<String> history = new ArrayList<>();

    private EditText maxNumberEditText;
    private Button registerMaxNumberButton;
    private Button nextNumberButton;
    private TextView currentNumberTextView;
    private TextView historyTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        maxNumberEditText = findViewById(R.id.max_number);
        registerMaxNumberButton = findViewById(R.id.register_max_number);
        nextNumberButton = findViewById(R.id.next_number);
        currentNumberTextView = findViewById(R.id.current_number);
        historyTextView =findViewById(R.id.history);

        //最大値を初期設定
        maxNumberEditText.setText(""+ maxNumer);
        //カーソルを最後尾へ
        maxNumberEditText.setSelection(maxNumberEditText.getText().length());

        //最大値を更新する
        registerMaxNumberButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String maxNumberString = maxNumberEditText.getText().toString();
                maxNumer = Integer.valueOf(maxNumberString);
                Log.d("MainActivity", "maxNumer: " + maxNumer);
                //最大値を更新したら履歴をクリアする
                history.clear();
                historyTextView.setText("");
            }
        });

        nextNumberButton.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                onClickNextNumber();
            }
        });
    }

    //nextNumberButtonがタップされたときの処理
    private void onClickNextNumber(){
        Log.d("MainActivity","onClickNextNumber: " + history.size());

        //全部の目が出たか確認
        if (history.size() == maxNumer){
            Log.d("MainActivity","全部の目が出ました!!");
            history.add("全部の目が出ました!!");
            historyTextView.setText(history.toString());
            return;
        }
        else if (history.size() > maxNumer)
        {
            Log.d("MainActivity","もう終わってます。");
            return;
        }

        int nextNumber = createRandomNumber();

        //重複している数値の場合は、やり直す
        while (history.contains(""+nextNumber)){
            Log.d("MainActivity","重複: " + nextNumber);
            nextNumber = createRandomNumber();
        }

        String nextNumberString = "" + nextNumber;
        currentNumberTextView.setText(nextNumberString);
        //履歴
        history.add(nextNumberString);
        Log.d("MainActivity",history.toString());

        historyTextView.setText(history.toString());
    }

    //maxNumberを考慮したランダムな数値を生成する
    private int createRandomNumber(){
//        double randomNumber = Math.random() * (maxNumer - 1);
//        return (int)randomNumber + 1;
        Random rand = new Random();
        return rand.nextInt(maxNumer) + 1;
    }
}