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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

Q&A

解決済

1回答

3443閲覧

テーブルの行を選択し、上下のボタンを押すことで、テーブルの選択行の並びを上下に入れ替えできるようにしたいと思っています。

osgjup

総合スコア10

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

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

0グッド

0クリップ

投稿2016/05/25 02:42

編集2016/05/25 03:15

テーブルの行を選択し、上下のボタンを押すことで、テーブルの選択行の並びを上下に入れ替えできるようにしたいと思っています。

テーブルをクリックすることで、その行のコード列の値がテキストボックス#codeに入るようにし、
その値をもとにtdの中身を検索して、#codeの値のある行を上下にするようにしました。

▼上ボタンを押したときの関数です▼

$("#up").click(function() {
var code = $('input#code').val();
var tr = "";
$("td:contains(" + code + ")").each(function(index) {
if ($(this).text() == code) {
tr = $(this).parent();
}
});

// 一個前のtrの前に置く if ($(tr).prev("tr")) { $(tr).insertBefore($(tr).prev("tr")[0]); }

});

コード | 価 格 |
――――――――――――
1 | 0 |
――――――――――――
2 | 3000 |
――――――――――――
3 | 0 |
――――――――――――
4 | 500 |
――――――――――――
999 | 450 |

テーブルは上記のようになっていますが、
コード1、2の行は選択後、上下ボタンを押すことで、思い通りの入れ替えができるようになりました。

ですが、コード3以降の行が思い通りの動きをせず、
・3の行を選択して上下ボタンを押しても4の行が動く
・4の行を選択して上下ボタンを押しても3の行が動く
・999の行は選択後上下ボタンを押しても動かない

となっております。
こちら考えられる原因は何になりますでしょうか?
ご回答、またはアドバイスをいただけますと幸いです。

なにとぞよろしくお願いいたします。

※※※※※※※※※※※※※※※※※※※※※※※※※※※
追記です。

『テーブルをクリックすることで、その行のコード列の値がテキストボックス#codeに値が入る』

▼上記の関数がこちらです。▼

$("#datatable tbody").off().on('click', 'tr', function() {
selectedRowItems = $("#datatable").dataTable().fnGetData(this);
var code = document.querySelector("#code");
code.value = selectedRowItems[0];

▼テキストボックス【#code】▼

<form name="codeForm"> <input id="code" type="text" name="code" size="10"> </form> ------------------------------------------------------------ ▼↑ボタン▼ <button class="btn-cal btn-delete" id="up">↑</button> ------------------------------------------------------------ datatablesというプラグインのテーブルを使い、SQLのデータをそのままテーブルに引っ張ってきています。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/05/25 02:55

テーブルの箇所ですがhtmlコードを質問文に追加されたほうが回答を得られやすいかと思います。 またコードはhtmlとjavascriptそれぞれコードブロックで囲っていただけますか
Lhankor_Mhy

2016/05/25 02:58

『テーブルをクリックすることで、その行のコード列の値がテキストボックス#codeに値が入る』の部分のコードをご提示ください。
kei344

2016/05/25 14:48

コードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「</>」ボタンを押すとコードブロックになります。
guest

回答1

0

ベストアンサー

直接の回答にはなっていないと思うのですが、

javascript

1$("td:contains(" + code + ")")

としていると、codeに3が来た場合、'33'も'13'も'993'その他たくさん含まれてしまうのではないでしょうか?
また、コードが入っているtd以外も対象になってしまい、選択行が正しく判断されないケースもあると思います。

trタグにidとしてコードを付与し、それで行を取得した方が良いのではないでしょうか。

html

1<tr id='code1'><td>1</td><td><td>.......</tr> 2<tr id='code2'><td>1</td><td><td>.......</tr>

javascript

1var tr = $("#code"+code);

また、prev()は対象のtrが一つしかセレクトされていない場合、ひとつしか要素を返しません。
ですので、

javascript

1$(tr).insertBefore($(tr).prev("tr")[0]);

の[0]は不要と思います。

投稿2016/05/25 11:03

munyagu

総合スコア479

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

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

osgjup

2016/05/26 02:41

ご回答ありがとうございました!そのやり方でやっていきたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問