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

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

ただいまの
回答率

90.47%

  • JavaScript

    17003questions

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

JSのToDoメモ制作について

受付中

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 1,363

Furisuke

score 93

以下のコードはJavaScriptのToDoメモです。
書き込んだ内容を追加、保存はうまくいったのですが削除がうまくいきません。削除ボタンを押すとすべて消えてしまいます。
どうすれば解決するのでしょうか?
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title></title>
</head>
<body>
  <input type="text" placeholder="add ToDo" id="txt_todo"><br>
  <input type="button" value="add" onclick="add_todo();"><br>
  <div id="view_todo"></div>

<script>
  function add_todo(){
    var txt_todo = document.getElementById('txt_todo').value;
    var view_todo = document.getElementById('view_todo').innerHTML;
    if (view_todo != ""){
      view_todo += "<br>";
    }
    document.getElementById('view_todo').innerHTML = view_todo + txt_todo + "<input type='button' value='del' onclick='del_todo();'>";
    save();
  }

  function del_todo(){
    document.getElementById('view_todo').innerHTML = "";
  }

  window.onload = function(){
    var body_todo = localStorage.getItem('txt_todo');
    document.getElementById('view_todo').innerHTML = body_todo;
  }

  function save(){
    localStorage.setItem('txt_todo', document.getElementById('view_todo').innerHTML);
  }


</script>
</body>

</html>
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

0

.getElementById('view_todo') だと、文字通りview_todo全体になっちゃいますよね?
todoの項目を追加する時に、各項目毎に一意のIDを付加しておき、削除時にはまず対象エレメントもIDを取得してからそのIDで削除対象を指定すれば良いにではないでしょうか?


追記
#いま移動中で具体的なコードを示せませんが・・・

[add]する時
ハッシュ関数か何かで擬似的な乱数を生成し、それを挿入するhtmlのブロックに個別のIDとして付加できませんか?

[del]する時
削除対象を、マウスクリックか何かで指定する想定なのですよね?
例えば ココ の「■任意のエレメント上で、マウスオーバーしたか調べる」などを組み合わせ、削除対象のIDを取得できませんか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/28 12:59

    回答ありがとうございます
    全体を指定していることは理解できるのですが
    >各項目毎に一意のIDを付加しておき、削除時にはまず対象エレメントもIDを取得してからそのIDで削除対象を指定すれば良い
    をいくら考えてもわかりません
    どのようにすれば付加や削除対象の指定ができるのでしょうか?

    キャンセル

0

pi-chanさんがおっしゃられている通り、document.getElementById('view_todo').innerHTML = "";とすると<div id="view_todo"></div>の中身(innerHTML)を空にしてしまうので、<div id="view_todo">内に追加したものは全て削除されてしまいます。


追加する時と削除するときで下記のような考え方にすれば意図しているように動作すると思います。
サンプルで載せているコードはクロスブラウザとかIEとか全く考慮していませんので、そのあたりは適時変更するなどして参考程度に考えてください。

追加する時
TODOを追加するときに、TODOごとのidを作成して
追加するTODOのHTMLに書かれているのonclick="del_toto()"の引数で作成したidを指定する
TODOをdivタグとかspanタグで囲ってid=""で作成したTODOのidを指定してあげる
(<br/> タグの有無を考えるとdivとかpのブロック要素の方が良さそうかも)

追加するTODOの例
<div id="todo_1">TODO TEXT <input type="button" value="del" onclick="del_todo('todo_1');"></div>
追加する関数(add_todo)の例
// 追加するTODOの連番
var todo_no = 0;
// TODOのidの接頭語
var todo_prefix = 'todo';

function add_todo() {
  var d = document;
  var todo_elm; // 追加するTODOのエレメントを入れる変数
  var input_elm = d.getElementById('txt_todo'); // TODOを追加するinputタグを取得
  var txt_todo = input_elm.value; // inputに入力されている文字
  // もし 入力されている文字が空でなければ
  if(txt_todo !== "") {
    // TODOの連番を+1する
    todo_no += 1;
    // 追加するTODOになる div 要素を作成 -> <div></div> 
    todo_elm = d.createElement('div');
    // 追加するTODOになる div 要素に todo1 の様な idをつける -> <div id="todo1"></div>
    todo_elm.id = todo_prefix + todo_no;
    // 追加するTODOになる div の中に inputで入力された文字列と 削除ボタンになるinput[type="button"]タグを追加
    todo_elm.innerHTML = txt_todo + ' <input type="button" value="del" onclick="del_todo(\'' + todo_elm.id + '\');">';
    // 確認用のlogを出力 ※ 機能的には不要
    console.log('+ create TODO', todo_elm);
    // <div id="view_todo"></div> に作成した TODOのdivを追加
    d.getElementById('view_todo').appendChild( todo_elm );
    save();
    // TODOを追加したらinputタグをクリアしてあげると使いやすくなりそうです
    input_elm.value = '';
  }
}

削除する時
funcion del_todo()で削除対象のTODOのidを受け取るようにする
対象のTODOを探してきてremoveChild()とかで対象の要素を削除する

削除する関数(del_toto)の例
function del_todo(todo_id) {
  // 確認用のタダのlog ※ 機能的には不要
  console.log('>>> delete TODO ID is', todo_id);
  // 引数のTODO IDから対象のTODOを取得 todo_id が 'todo1'なら <div id="todo1">を取得
  var del_elm = document.getElementById(todo_id);
  // <div id="view_todo">の中から del_elm で取得した div を削除
  document.getElementById('view_todo').removeChild(del_elm);
  // 消した後も保存してあげないとリロード時に消す前の状態になってしまう
  save();

※ ただし、このままではリロード時にTODOのIDが0に戻ってしまうので同じIDが存在してしまう可能性ができます。
save時に今のtodo_noも保存して、ロード時にtodo_noも値があれば読み込んであげるとか
IDに時間を追加してあげるとか、(この場合 todo_no の必要性ほぼ無いですが)
todo_elm.id = todo_prefix + todo_no + '-' + new Date().getTime();
リロード時にTODOのIDが被らないように工夫してあげる必要もあるでしょう。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/09/03 17:43

    返信遅れて申し訳ございません
    もう少し簡単なコードってないですかね?
    少し難しくて理解できません><

    キャンセル

  • 2015/09/03 17:58

    > Furisukeさん
    コードにコメントを追加しました。
    申し訳ないのですが、どの部分がどのように難しくて理解できないのか書いて頂けないと答えようが無いというのが正直な所です。
    [参考]
    - http://www.fumiononaka.com/TechNotes/NGWords.html#Yo
    - http://www.fumiononaka.com/TechNotes/NGWords.html#Ho

    キャンセル

  • 2015/09/03 19:47

    返信ありがとうございます
    本当に申し訳ないのですが全体的に何回読んでも理解できません
    自分のやるべきこととして
    ・書き込まれたメモにIDをつける
    ということは理解できたのですが
    どうやってIDをつけるかがわからないのです。
    例えば
    innerHTML = "<div id="a">" + text + "</div>"
    としても同じIDが繰り返されるだけで同じIDは無効ですし・・・。

    キャンセル

  • 2015/09/03 21:21

    > Furisukeさん
    ユニークなIDの付け方ですが、仰られているように
    innerHTML = "<div id="a">" + text + "</div>" と固定にしてしまうと同じIDのdivが作られてしまうので、意図したとおりに動作しません。
    先の例では
    var todo_no という始まりが0の数字を保持しておく変数を用意しておきます。
    この変数はTODOを作る関数add_todo()の外に置いてあるので、add_todo()が呼び出される度に0に初期化されることはありません。
    add_todo()が呼び出されてTODOを作る度に todo_noを +1 します。
    1回目はtodo_noは1になり、2回目はtodo_noは2になります。
    この増えていく番号をIDに使うという記述が
    todo_elm.id = todo_prefix + todo_no;
    になります。HTMLのIDの先頭が数字から始まるのはダメなのでtodo_prefixという変数で指定した文字列 (todo) の後に 増えていく数字(todo_no)を繋いだものをIDとして設定しています。
    1回目は <div id="todo1"> 2回目は <div id="todo2"> という異なるIDで追加していくことができます。
    ここまでが、最初に書いたコードの部分の説明になります。

    で、補足部分なのですが
    ロードの度にtodo_noは初期値の0から始まることになりますのでTODOが保存されている状態だと、また0から連番を始めるとIDが被ってしまう可能性が出てきます。
    その回避方法として、下記の方法の例を示しています。

    1. いま 何番までTODOを作成したか、つまりtodo_noの数字も保存しておいて、リロード時に、保存してある番号からスタートさせる方法
    2. そもそもIDに new Date().getTime() でTODOを追加した時間の数字を付けてしまえば、被ることは殆どなくなるだろうという方法

    と言った感じです。

    ---

    chromeなどで見られているのであれば、一度コードをコピペしてメニューの
    表示 > 開発/管理 > デベロッパーツール
    を選択して、コンソール(Console)のタブをクリックすると追加されるTODOのHTMLとかが表示されますので、解らない変数などがあれば
    console.log( todo_no ); の様に書いてあげれば、その時に何がその変数に入っているか確認することができますよ!

    キャンセル

  • 2015/09/04 03:31

    del_todo関数の引数にthisを指定することで、クリックされた要素を取得できます。
    これを利用すれば、ユニークなIDを使用する必要は無いと考えますが…いかがでしょうか。

    キャンセル

  • 2015/09/04 12:47

    > sounisi5011さん
    はい。単にこのクリックされた時に対象を消すという機能を実装するだけならIDは必ずしも必要は無いです。
    質問者さん的にHTMLにはIDが付いているので、getElementByI()で何を取得しているかが見えるので理解しやすいかと思った点と、ここから機能を拡張していくのであればIDがあった方が色々楽だろうな。思う程度の問題です。

    キャンセル

0

jsdoit 上に作ってみました。(jquery を使って書いています)
http://jsdo.it/katoy/4cP3

html のエスケープ、削除時のアニメーション機能を追加しています。

* todo のテキストに <s>abc</s> と入力して [add] した時に todo リスト上で 取り消し線が現れないようになっています。
* [del] をクリックすると、アニメションしながら、その行が消えていきます。
* todo のテキストが空の時に [add] をクリックしても、todo リストには追加されません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

修正を可能な限り少なくするならば、以下の様なコードとなります。
他の修正として、

* localStorageに対応するデータが保存されていない(初回利用時の)場合が想定できていない
* 項目を削除した時にデータが保存されていない

この2点も修正しました。

function add_todo() {
    var txt_todo = document.getElementById('txt_todo').value;

    /**
     * 各項目をdiv要素で囲む。
     * div要素は自動で改行するため、br要素の挿入処理を省略。
     *
     * また、del_todo関数の引数にthis(onXXX等のイベントプロパティ内では、これはイベントを設定した要素を示す)を指定し、
     * クリックされたinput type=button要素を取得する。
     */

    /*
    var view_todo = document.getElementById('view_todo').innerHTML;
    if (view_todo != '') {
        view_todo += '<br>';
    }
    document.getElementById('view_todo').innerHTML = view_todo + txt_todo + '<input type="button" value="del" onclick="del_todo()">';
    */
    document.getElementById('view_todo').innerHTML += '<div>' + txt_todo + '<input type="button" value="del" onclick="del_todo(this)">' + '</div>';
    save();
}

/*
function del_todo() {
    document.getElementById('view_todo').innerHTML = '';
}
*/
function del_todo(item_button_elem) {
    // クリックされたbutton要素の親要素(=項目を囲むdiv要素)を取得
    var item_elem = item_button_elem.parentNode;
    // 項目のdiv要素を削除
    item_elem.parentNode.removeChild(item_elem);
    // 保存
    save();
}

window.onload = function () {
    var body_todo = localStorage.getItem('txt_todo');
    // localStorage.getItemは対応するデータが無い場合にnullを返すため、
    // これに対応
    if (body_todo) {
        document.getElementById('view_todo').innerHTML = body_todo;
    }
}

function save() {
    localStorage.setItem('txt_todo', document.getElementById('view_todo').innerHTML);
}

(上記の修正はJavaScriptに対してのみ行いました。このため、上記のコードはJavaScriptのみとなります)

動作も確認しています。
ただし、このコードには以下に挙げる改善すべき点が数多くあります。

* ToDoは項目リストなのだから、ulli要素を利用するべき
* 項目の入力値が空、もしくはスペースのみの場合、追加を行わない方が利便性が向上する。
onXXX等の属性を利用してイベントを登録する方法は、イベントを重複して登録できない等の問題からあまり使用するべきではない。
  (このコードでは重複登録はないが、利用者のアドオン等がそのような実装になっている場合も。その場合、利用者のアドオンが正常に動作しない可能性が考えられる)
  addEventListener(Internet Explorer 8以前に対応するなら、attachEventも併用)を利用したほうが良い。
innerHTMLは重い。このため、document.createElement等でHTMLに対応するDOMを生成するか、insertAdjacentHTMLを利用した方が良い。
window.localStorageオブジェクトは全てのブラウザが対応しているわけではない。window.localStorageを利用する処理を行う前に、これに対応しているか検証するべき。
* localStorageにはHTMLを直接保存するより、JavaScript側で配列を作成し、その配列に項目の情報を入れ、それをJSON.stringifyJSONに変換し、保存したほうが良い。これにより、利用者のハードディスクの使用量を軽減できる。
  なお、JSONから配列に戻す場合はJSON.parseを使用。

このため、私ならば以下のようにコードを書きます。
(下記コードはInternet Explorer 8以前には対応していません。対応する必要がある場合はコメントをお願いします。)

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>teratail's answer on 15262</title>
</head>
<body>
  <input type="text" placeholder="add ToDo" id="txt_todo"><br>
  <input type="button" value="add" id="add-button"><br>
  <ul id="view_todo"></ul>
  <script>
    /**
     * localStorageに保存するToDoの情報を保持する配列
     * @type {!Array.<!String>}
     */
    var todo_items = [];

    /**
     * localStorageに対応しているか検証
     * @const
     * @type {boolean}
     * @see https://github.com/Modernizr/Modernizr/blob/master/feature-detects/storage/localstorage.js
     */
    var IS_SUPPORT_LS = (function () {
      var t;

      if (window.hasOwnProperty('localStorage')) {
        t = Math.random();
        try {
          localStorage.setItem(t, t);
          localStorage.removeItem(t);
          return true;
        } catch (e) { }
      }
      return false;
    })();

    /**
     * localStorageで使用するキー
     * @const
     * @type {string}
     */
    var LS_KEY = 'txt_todo';

    /**
     * ToDoに項目を追加する関数
     */
    function add_todo() {
      var value;
      var item_value;

      /**
       * 入力欄の入力値を取得
       */
      var value = document.getElementById('txt_todo').value;

      /**
       * 入力値が空、あるいはスペースのみの場合、項目を追加しない
       */
      if (value.trim() !== '') {
        /**
         * 入力欄の入力値をStringオブジェクトに変換
         *
         * Note: ここでStringオブジェクトに変換しているのは、重複した値を持つ項目を識別するため
         *       プリミティブ値(普通の文字列)では同じ値の項目を区別できないが、
         *       オブジェクトは区別できる
         */
        item_value = new String(value);

        /**
         * ToDoの情報を配列に追加
         */
        todo_items.push(item_value);

        /**
         * HTML内に要素を追加する
         */
        add_item_elem(item_value);

        /**
         * データを保存
         */
        save();
      }
    }

    /**
     * ToDoの項目をHTML内に挿入する関数
     * @param {!String} item_value 挿入する項目の値
     */
    function add_item_elem(item_value) {
      var item_elem;
      var item_del_button_elem;

      /**
       * この処理は、項目に対応する以下のHTMLを生成しています
       * (厳密には異なります)
       *
       * <li>
       *   {item_value}
       *   <input type=button value=del onclick=del_todo>
       * </li>
       */
      item_elem = document.createElement('li');
      item_elem.appendChild(document.createTextNode(item_value + ''));
      item_del_button_elem = document.createElement('input');
      item_del_button_elem.type = 'button';
      item_del_button_elem.value = 'del';
      item_del_button_elem.addEventListener('click', del_todo_create(item_value), false);
      item_elem.appendChild(item_del_button_elem);

      /**
       * HTMLを挿入
       */
      document.getElementById('view_todo').appendChild(item_elem);
    }

    /**
     * 「HTML内のToDoの項目を削除する関数」を生成する関数
     *
     * Note: わざわざ「削除する関数を生成する関数」を定義しているのは、
     *       削除に必要な情報である項目の値(item_value)を
     *       クロージャで保持するため
     *
     * @param {!String} item_value 削除する項目の値
     * @return {function(Event)} HTML内のToDoの項目を削除する関数
     */
    function del_todo_create(item_value) {
      return function (event) {
        var item_elem;

        /**
         * ToDoの情報を配列から削除
         */
        todo_items = todo_items.filter(function (value) {
          return value !== item_value;
        });

        /**
         * HTML内の項目を削除
         */
        item_elem = event.currentTarget.parentNode;
        item_elem.parentNode.removeChild(item_elem);

        /**
         * 保存
         */
        save();
      };
    }

    /**
     * ページが読み込まれたら、localStorageから情報を取り出しHTMLに展開する関数
     */
    function load() {
      var todo_json_data;
      var todo_saved_data;

      if (IS_SUPPORT_LS) {
        /**
         * localStorageからデータを読み込む
         */
        todo_json_data = localStorage.getItem(LS_KEY);

        /**
         * localStorageから正しく読み込めたか、
         * またそのデータが存在するか判定
         */
        if (todo_json_data) {
          try {
            /**
             * localStorageから読み込んだJSONをJavaScriptオブジェクトに変換
             */
            todo_saved_data = JSON.parse(todo_json_data);

            /**
             * 読み込んだデータが配列か、また配列の項目数が1以上か判定
             */
            if (Array.isArray(todo_saved_data) && 0 < todo_saved_data.length) {
              /**
               * 読み込んだデータに合わせ、HTMLを挿入
               * また、データ内の文字列をStringオブジェクトに変換
               *
               * Note: ここでStringオブジェクトに変換しているのは、重複した値を持つ項目を識別するため
               *       プリミティブ値(普通の文字列)では同じ値の項目を区別できないが、
               *       オブジェクトは区別できる
               */
              todo_items = todo_saved_data.map(function (v) {
                // 各項目に相当する文字列を、Stringオブジェクトに変換
                var value = new String(v);

                // 項目に対応するHTMLを挿入
                add_item_elem(value);

                // Stringオブジェクトを返す
                return value;
              });
            }
          } catch (e) { }
        }
      }
    }

    /**
     * localStorageに情報を保存する関数
     */
    function save() {
      var todo_json_data;

      if (IS_SUPPORT_LS) {
        todo_json_data = JSON.stringify(todo_items);
        localStorage.setItem(LS_KEY, todo_json_data);
      }
    }

    /**
     * ページが読み込まれた際にload関数が実行されるよう設定
     * Note: この処理は以下とほぼ等価:
     *       window.onload = load;
     */
    window.addEventListener('load', load, false);

    /**
     * addボタンがクリックされた時、add_todo関数が実行されるよう設定
     */
    document.getElementById('add-button').addEventListener('click', add_todo, false);
  </script>
</body>
</html>

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 受付中

    JavaScriptのfunctionについて

    以下のようにコードを書くと ボタンを押せば「Hello World」が表示されますがbuttonが消えてしまいます このHello Worldをbuttonの下に表示するようにする

  • 受付中

    「押す」ボタンをクリックすることで四角内の文字で「出力」を上書きしたい

    閲覧ありがとうございます。 表題の通りなのですが、どうも反応してくれません。 どこがダメなのか教えてください。 よろしくお願いいたします。 <!doctype html> <

  • 解決済

    作成したボタンの値をテキストボックスへ出力方法

    作成したボタン(HTML)押下後、テキストボックスへ出力するにはどのようにすればよいでしょうか? このテキストボックスは ・暗証番号機能(数値のみ) ・4桁の入力制限 以上で

  • 受付中

    innerHTMLの追加と削除

    こんにちは 現在JSでToDoメモのようなものを作ろうと思っているのですが 問題点が2つ出てきました。 1、innerHTMLにtextに書き込まれた内容を書き込めるが追加ができな

  • 受付中

    JSのテキスト保存について

    下記のコードはテキストボックスに書かれた文字をinnerHTMLで書き出しそれを更新しても消えない、保存するというプログラムです。 ですが肝心の保存ができません なぜでしょうか?

  • 受付中

    JavaScriptのlocalstorage

    下記のコードは収支を計算するコードです もとのお金を入力し、ボタンを押せばその日の収入を入力して計算し結果を表示して保存するというコードなのですが保存ができません どうすればできま

  • 受付中

    JavaScriptの変数の更新

    下記のコードはプロンプトで入力された数字をinnerHTMLに表示し保存するというコードです。 そこまではうまくいくのですがこれを 次回入力された数字が前回より大きな数字だった場合

  • 受付中

    JSで任意のinnerHTMLを削除したい

    先日同じような質問をさせていただいたのですが初心者の私にはとても難しく理解できなかったのでもう一度質問させていただきます 下記のコードはテキストボックスで受け取った内容をinner

同じタグがついた質問を見る

  • JavaScript

    17003questions

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