▼スレッド
│
└◇754:Re:ID順 [moon] 08/27 20:19
└◇756:Re[2]:ID順 [masaki] 08/28 08:33
└◇757:Re[3]:ID順 [moon] 08/28 20:19
└◇758:Re[4]:ID順 [masaki] 08/29 17:44
└◇759:サンプルHTML [moon] 08/30 01:15
├◇761:Re:サンプルHTML [masaki] 08/30 16:00
│└◇762:サンプルHTML(改) [moon] 08/30 17:32
│ └◇763:Re:サンプルHTML(改) [masaki] 08/31 19:01
│ └◇764:Re[2]:サンプルHTML(改) [moon] 08/31 19:09
│ └◇765:Re[3]:サンプルHTML(改) [masaki] 09/01 17:58
│ └◇766:Re[4]:サンプルHTML(改) [moon] 09/01 21:57
│ └◇767:Re[5]:サンプルHTML(改) [masaki] 09/02 19:11
│ └◇768:Re[6]:サンプルHTML(改) [moon] 09/02 19:21
│ └◇769:Re[7]:サンプルHTML(改) [masaki] 09/06 08:04
└◇770:769の次 [masaki] 09/06 09:46
└◇771:nameが無さそう [moon] 09/06 10:24
└◇772:参考 [moon] 09/06 10:36
└◇773:Re:参考 [masaki] 09/06 11:29
└◇774:Re[2]:参考 [moon] 09/06 13:09
└◇775:Re[3]:参考 [masaki] 09/06 15:34<-last
SAIL/SIONさんの意思を尊重したいと思いますので、可能性だけを指摘しておきますがそれ以上は配布元で御願いします。スレッド一覧
# 利用規約を見た後なので少し遠慮中。
# しかも、改造自体はちゃんと見ていないので仕様かどうかも不明な状態。(笑)
リストを作成する時に、
・sortがあるなら、そのソートが行われていない。
・sortではなく自分でforeachなどでループさせて位置決めをしているなら、それが正常に機能していない。
など。
要するに、大元のリストデータを作成する時点で整列が行われていない、と。
> ・sortではなく自分でforeachなどでループさせて位置決めをしているなら、それが正常に機能していない。スレッド一覧
これでした。(汗
しかも仕様のようです(汗
ユーザーデータもバグってしまいましたし(泣
やっぱり、やめようと思います(^^;
ご迷惑をおかけしました。
> > ・sortではなく自分でforeachなどでループさせて位置決めをしているなら、それが正常に機能していない。スレッド一覧
> これでした。(汗
> しかも仕様のようです(汗
> ユーザーデータもバグってしまいましたし(泣
> やっぱり、やめようと思います(^^;
> ご迷惑をおかけしました。
並び替えはJavaScriptで各ブラウザにやってもらうというのも楽で良いかもしれませんよ。
そうすれば、例えばボタンを押すごとにID順だけでなく名前順や職業順に並び替える、ということも出来ますし。
# ただし、JavaScriptが使用不可や対応していない場合はログイン順?のまま表示されてしまいますが。
> 並び替えはJavaScriptで各ブラウザにやってもらうというのも楽で良いかもしれませんよ。スレッド一覧
> そうすれば、例えばボタンを押すごとにID順だけでなく名前順や職業順に並び替える、ということも出来ますし。
>
> # ただし、JavaScriptが使用不可や対応していない場合はログイン順?のまま表示されてしまいますが。
javascriptはよくわかりませんが、やってみます。
ありがとうございました。
> javascriptはよくわかりませんが、やってみます。スレッド一覧
> ありがとうございました。
サンプル@JavaScript初心者の落書き(それでも、IE6.0SP1とMozilla1.4で動作確認済み)
<html>
<head>
<script language=JavaScript1.2>
<!--
function SortRegex(num){
var i, j;
var obj = document.getElementById("test");
var obj1, obj2;
var str1, str2;
var re = new RegExp("(\\d{4}):(.+)\\((.+)\\)");
var ar;
var revflag = !document.getElementById("reverse").checked;
if(num < 1){
num = 1;
}
else if(num > 3){
num = 3;
}
for(i = 1; i < obj.length; i++){
if((ar = re.exec(obj.options[i].text)).length == 0){
alert("正規表現にマッチしませんでした。(1)");
return;
}
str1 = ar[num];
for(j = 0; j <= i; j++){
if((ar = re.exec(obj.options[j].text)).length == 0){
alert("正規表現にマッチしませんでした。(2)");
return;
}
str2 = ar[num];
if(i != j && (revflag && str1 <= str2 || !revflag && str1 >= str2)){
obj1 = obj.options[i];
obj2 = obj.options[j];
obj.insertBefore(obj1, obj2);
j = i;
}
}
}
obj.selectedIndex = 0;
}
//-->
</script>
</head>
<body>
<select id="test">
<option value="opt1">0005:名前3(職業a)
<option value="opt2">0004:名前2(職業b)
<option value="opt3">0001:名前1(職業c)
<option value="opt4">0003:名前0(職業z)
<option value="opt5">0006:名前4(職業y)
<option value="opt6">0000:名前5(職業x)
<option value="opt7">0002:名前6(職業w)
</select><br>
<input type="button" value="ID順" onClick="SortRegex(1)"><br>
<input type="button" value="名前順" onClick="SortRegex(2)"><br>
<input type="button" value="職業順" onClick="SortRegex(3)"><br>
<input type="checkbox" id="reverse">降順
</body>
</html>
> > javascriptはよくわかりませんが、やってみます。スレッド一覧
> > ありがとうございました。
>
> サンプル@JavaScript初心者の落書き(それでも、IE6.0SP1とMozilla1.4で動作確認済み)
>
> <html>
> <head>
> <script language=JavaScript1.2>
> <!--
> function SortRegex(num){
> var i, j;
> var obj = document.getElementById("test");
> var obj1, obj2;
> var str1, str2;
> var re = new RegExp("(\\d{4}):(.+)\\((.+)\\)");
> var ar;
> var revflag = !document.getElementById("reverse").checked;
> if(num < 1){
> num = 1;
> }
> else if(num > 3){
> num = 3;
> }
> for(i = 1; i < obj.length; i++){
> if((ar = re.exec(obj.options[i].text)).length == 0){
> alert("正規表現にマッチしませんでした。(1)");
> return;
> }
> str1 = ar[num];
> for(j = 0; j <= i; j++){
> if((ar = re.exec(obj.options[j].text)).length == 0){
> alert("正規表現にマッチしませんでした。(2)");
> return;
> }
> str2 = ar[num];
> if(i != j && (revflag && str1 <= str2 || !revflag && str1 >= str2)){
> obj1 = obj.options[i];
> obj2 = obj.options[j];
> obj.insertBefore(obj1, obj2);
> j = i;
> }
> }
> }
> obj.selectedIndex = 0;
> }
> //-->
> </script>
> </head>
> <body>
> <select id="test">
> <option value="opt1">0005:名前3(職業a)
> <option value="opt2">0004:名前2(職業b)
> <option value="opt3">0001:名前1(職業c)
> <option value="opt4">0003:名前0(職業z)
> <option value="opt5">0006:名前4(職業y)
> <option value="opt6">0000:名前5(職業x)
> <option value="opt7">0002:名前6(職業w)
> </select><br>
> <input type="button" value="ID順" onClick="SortRegex(1)"><br>
> <input type="button" value="名前順" onClick="SortRegex(2)"><br>
> <input type="button" value="職業順" onClick="SortRegex(3)"><br>
> <input type="checkbox" id="reverse">降順
> </body>
> </html>
<head></head>の部分は、sub header にやるのでしょうか?(^^;;;
> <head></head>の部分は、sub header にやるのでしょうか?(^^;;;スレッド一覧
JavaScriptのコードはHEADタグ内に直接書くか外部ファイルとして読み込むのが動作的には安心です。
しかし、今回のような場合はsub header内に単純に書いただけだと関係無い時も毎回出力することになるので効率的とは言えません。
なので、sub normal_actionで出力されるようにするのが良いと思います。(直接出力するなり、サブルーチンを用意しそこで出力するなり。)
----
機能強化サンプル
<html>
<head>
<script language=JavaScript1.2>
<!--
function RegexSort(num){
var i, j;
var obj = document.getElementById("test");
var obj1, obj2;
var str1, str2;
var re = new RegExp("(\\d{4}):(.+)\\((.+)\\)");
var ar;
var revflag = !document.getElementById("reverse").checked;
if(num < 1){
num = 1;
}
else if(num > 3){
num = 3;
}
for(i = 1; i < obj.length; i++){
if((ar = re.exec(obj.options[i].text)).length == 0){
return;
}
str1 = ar[num];
for(j = 0; j <= i; j++){
if((ar = re.exec(obj.options[j].text)).length == 0){
return;
}
str2 = ar[num];
if(i != j && (revflag && str1 <= str2 || !revflag && str1 >= str2)){
obj1 = obj.options[i];
obj2 = obj.options[j];
obj.insertBefore(obj1, obj2);
break;
}
}
}
obj.selectedIndex = 0;
}
function SelectShow(){
var opt = document.getElementById("test").options;
var str = document.getElementById("teststr").value;
var i;
if(str != ""){
for(i = 0; i < opt.length; i++){
opt[i].style.color = (opt[i].text.indexOf(str) != -1 ? "#FF0000" : "#000000");
}
}
else{
for(i = 0; i < opt.length; i++){
opt[i].style.color = "#000000";
}
}
}
//-->
</script>
</style>
</head>
<body>
<select id="test">
<option value="opt1">0005:名前3(職業a)
<option value="opt2">0004:名前2(職業b)
<option value="opt3">0001:名前1(職業c)
<option value="opt4">0003:名前0(職業z)
<option value="opt5">0006:名前4(職業y)
<option value="opt6">0000:名前5(職業x)
<option value="opt7">0002:名前6(職業w)
</select>
<hr>
<input type="button" value="ID順" onClick="RegexSort(1)">
<input type="button" value="名前順" onClick="RegexSort(2)">
<input type="button" value="職業順" onClick="RegexSort(3)">
<input type="checkbox" id="reverse">降順
<hr>
<input type="text" id="teststr" size="20">を含むものを色付け表示<input type="button" value="実行" onClick="SelectShow()">
</body>
</html>
やってみましたが、エラーがでてしまいました(泣スレッド一覧
もしかして、perl -cwで調べるとjavascriptは全部エラーになってしまうとかあるのでしょうか(汗
> やってみましたが、エラーがでてしまいました(泣スレッド一覧
> もしかして、perl -cwで調べるとjavascriptは全部エラーになってしまうとかあるのでしょうか(汗
どう書きました?
printで出力するようにしないといけないですよ。
例えば、
print "<script language=JavaScript1.2>\n";
〜
print "</script>\n";
のようにするか、
print << 'JSLIST';
<script language=JavaScript1.2>
〜
</script>
JSLIST
のように。
また、全角空白は削除するなりタブに置き換えるなりする必要があります。
> print "<script language=JavaScript1.2>\n";スレッド一覧
> 〜
> print "</script>\n";
>のようにするか、
すべてprintですよね?
これでやってみたのですが・・・(汗
おかしいですね、もう一度やってみます(^^;;
(明日課題テストなので、終わってから・・・
失礼しました(礼))
> > print "<script language=JavaScript1.2>\n";スレッド一覧
> > 〜
> > print "</script>\n";
> >のようにするか、
> すべてprintですよね?
> これでやってみたのですが・・・(汗
> おかしいですね、もう一度やってみます(^^;;
> (明日課題テストなので、終わってから・・・
> 失礼しました(礼))
そうです。
まあ、全行printに書き直すのは面倒なのでヒアドキュメントで書いたほうが楽ですが。(<<'JSLIST'として書いた方法)
正しく表示されるようになったのですが、うまく動いてくれません(汗)スレッド一覧
やっていることが間違っているかもしれませんが、
normal_actionのprint qq|<div align=center><select name=pd>\n|;の上に
print << 'JSLIST';
<select id="test">
<option value="opt1">0005:名前3(職業a)
<option value="opt2">0004:名前2(職業b)
<option value="opt3">0001:名前1(職業c)
<option value="opt4">0003:名前0(職業z)
<option value="opt5">0006:名前4(職業y)
<option value="opt6">0000:名前5(職業x)
<option value="opt7">0002:名前6(職業w)
</select>
<hr>
<input type="button" value="ID順" onClick="RegexSort(1)">
<input type="button" value="名前順" onClick="RegexSort(2)">
<input type="button" value="職業順" onClick="RegexSort(3)">
<input type="checkbox" id="reverse">降順
<hr>
<input type="text" id="teststr" size="20">を含むものを色付け表示<input type="button" value="実行" onClick="SelectShow()">
JSLIST
を追加しました。
(<head>の部分はすべて&header2に書きました)
「名前順」などの表示はちゃんとされていますが(汗汗
ご迷惑ばかりおかけしてすみません。(泣
> (<head>の部分はすべて&header2に書きました)スレッド一覧
このsub header2をsub headerの「代わり」に実行していますか?
# サンプルHTML自体の動作確認はしたのでしょうか?
# これがそもそも動作しないのであればブラウザの問題も考えられるということになりますし。
返信がものすごく遅れてしまい、申し訳ないです。スレッド一覧
> このsub header2をsub headerの「代わり」に実行していますか?
そうです(^^;
> # サンプルHTML自体の動作確認はしたのでしょうか?
> # これがそもそも動作しないのであればブラウザの問題も考えられるということになりますし。
試してみます(^^;
一応、見た目は成功したのですが、リストでプレイヤーを選択しても、ID0000のプレイヤーにしか会うことが出来なくなってしまいました(;;スレッド一覧
ID順。などを押さなくても、ID0000にしか会えません(泣
> 一応、見た目は成功したのですが、リストでプレイヤーを選択しても、ID0000のプレイヤーにしか会うことが出来なくなってしまいました(;;スレッド一覧
> ID順。などを押さなくても、ID0000にしか会えません(泣
selectタグにnameを付けていますか?
サンプルではnameが付いていませんがあれはGETやPOSTをする目的がなかったので付いていないだけです。
sos2.cgiの設定部分にある「$method = 'POST';」をGETに変更してテストしてみると良いかもしれません。スレッド一覧
そうすれば、どういう値が送られているかURLに表示されるので。
# 間違ってもGETにしたまま公開しないように注意。
> sos2.cgiの設定部分にある「$method = 'POST';」をGETに変更してテストしてみると良いかもしれません。スレッド一覧
> そうすれば、どういう値が送られているかURLに表示されるので。
>
> # 間違ってもGETにしたまま公開しないように注意。
nameの設定がされていませんでした(TT
無事解決できました。ありがとうございました!
> > sos2.cgiの設定部分にある「$method = 'POST';」をGETに変更してテストしてみると良いかもしれません。スレッド一覧
> > そうすれば、どういう値が送られているかURLに表示されるので。
> >
> > # 間違ってもGETにしたまま公開しないように注意。
> nameの設定がされていませんでした(TT
> 無事解決できました。ありがとうございました!
疑問に思っていたのですが、No.767から考えるとプレイヤーリストのselectが2つある、なんてことはないですよね?
元のselectはname=pdが最初から付いているので今回のようなミスは無いと思いますし。
# まあ、name=pdをid=に変更してしまいこういう状況になったとは考えられますが。
> 疑問に思っていたのですが、No.767から考えるとプレイヤーリストのselectが2つある、なんてことはないですよね?スレッド一覧
いえ。ひとつです(^^;
> 元のselectはname=pdが最初から付いているので今回のようなミスは無いと思いますし。
> # まあ、name=pdをid=に変更してしまいこういう状況になったとは考えられますが。
そうです(^^;
ご迷惑をおかけしました。