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

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

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

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

Q&A

解決済

3回答

1335閲覧

javascript エレメントの情報を複製したい

coko1

総合スコア276

JavaScript

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

0グッド

0クリップ

投稿2017/03/07 00:57

編集2017/03/07 01:45

現在、ユーザー情報を設定する画面を作成しているのですが、その画面に画面表示時点と内容登録時点でのデータに差異がなかった場合に登録処理を行わないような実装を考えています。
そこで、タイトル通りの質問なのですが、エレメントの情報を複製したものを格納するためにはどのようにしたらよいでしょうか?

javascript

1var orgData = doc.getElementsByClassName('data-pool'); //複製したものを格納したい 2var editData = doc.getElementsByClassName('data-pool'); 3var diffFlag = false; 4for(i = 0;i < orgData.length;i++){ 5 var a = orgData[i].value; 6 var b = orgData[i].value; 7 if(orgData[i].value != editData[i].value){ 8 diffFlag = true; 9 break; 10 } 11} 12if (diffFlag) alert('データの変更はありません。'); 13

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

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

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

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

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

guest

回答3

0

ベストアンサー

的外れかもしれませんが、ページを開いた時点で設定されている値と内容登録時点(以下コードではボタンをクリックしたとき)でのデータの比較は以下のように行えると思いますが、いかがでしょうか?

HTML

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <meta charset="utf-8"> 5 <title>タイトル</title> 6</head> 7<body> 8<form> 9 <label> 10 <input type="text" class="text1" value="A"> 11 </label> 12 <label> 13 <input type="text" class="text1" value="B"> 14 </label> 15 <label> 16 <input type="text" class="text1" value="C"> 17 </label> 18 <label> 19 <input type="text" class="text1" value="D"> 20 </label> 21 <input type="button" id="button1" value="クリック"> 22</form> 23<script> 24 var className = document.getElementsByClassName("text1"); 25 var oldData = []; 26 var editData = []; 27 28 function getOldInformation() { 29 for (var i = 0; i < className.length; i++) { 30 oldData[i] = className[i].value; 31 } 32 } 33 34 function getEditInformation() { 35 var result = true; 36 for (var i = 0; i < className.length; i++) { 37 editData[i] = className[i].value; 38 } 39 if (oldData.length !== editData.length) { 40 result = false; 41 } else { 42 for (var j = 0; j < oldData.length; j++) { 43 if (oldData[j] !== editData[j]) { 44 result = false; 45 } 46 } 47 } 48 return result; 49 } 50 document.addEventListener("DOMContentLoaded", getOldInformation, false); 51 document.getElementById("button1").addEventListener("click", function () { 52 if (!(getEditInformation())) { 53 alert("同じではない"); 54 } else { 55 alert("同じ"); 56 } 57 }, false); 58</script> 59</body> 60</html>

投稿2017/03/07 01:42

s8_chu

総合スコア14731

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

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

0

defaultValue プロパティ

input要素ノード、textarea要素ノードは defaultValue プロパティに初期値が存在しますので、それを利用すれば初期情報値を複製する手間がはぶけるのではないでしょうか。

Re: coko1 さん

投稿2017/03/07 02:05

think49

総合スコア18162

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

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

0

画面表示時点と内容登録時点でのデータに差異がなかった場合

想定がよくわからないのですが、元情報はhiddenなどに予めいれておけば
チェックしやすいかと。
もしくはdata-*形式で保持するかのどちらかですかね

もちろん、受け取り側でもチェックは必要ですが、もしDBの登録を
想定しているのであれば、変更がない場合は更新はかかりません

投稿2017/03/07 01:16

yambejp

総合スコア114769

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

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

coko1

2017/03/07 01:46

追記したコードのようにしたいのです
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問