教えて下さい。



0   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
はじめまして。
HTML初心者で、何から説明してよいのか・・・。

やりたい事は
画面である箇所(コマンドボタンでもテキストでも何でもいいですが)が
クリックされたら表示されている"○"を"◎"に変更する
ような事を行いたいのです。

とりかかれなくて困っていますので
何か少しでも教えて下さい。
お願いします。

1   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
質問の回答が得られない為
下記のサイトにも質問されていただきました。

http://www.gac.jp/article/index.php?stats=question&category=3

2   名前: あの : 2006/07/14(金) 13:47  ID:lKHRzitM
質問の仕方
http://www.tagindex.com/bbs/advice.html

良く読んでみてください

3   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
タイトルに"教えて下さい"は内容が
分からなくいけなかったですね。
申し訳ないです。

その他に何かいけないでしょうか?

4   名前: 匿名 : 2006/07/14(金) 13:47  ID:BnulISAl
>>3
マルチポストは禁止。
するならむこうにもここのURL書いてください。

5   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
匿名様

>マルチポストは禁止。
>するならむこうにもここのURL書いてください。

こちらにもあちらにも双方のURLを記述し、
訳も書いておりますが・・・。
いけないのでしょうか。

6   名前: Pid : 2006/07/14(金) 13:47  ID:7ZLUWR5F
まず,一時間やそこらで回答がつくことは,あんまりありません(何を答えて良いか分からないような質問の場合は尚更です)。急ぎであれば身近な友人なり有料のサポートなりを使った方が確実です。

それから,質問掲示板へのマルチポストの場合,暗黙の了解事項(?)として

(1). そこでマルチポストが禁止されていないか確かめる
(2). 全ての投稿先を告げる
(3). もらったアドバイスや,それによる成果などを全ての投稿先で共有する

今回の場合,(1) と (2) は OK ですので,あとは (3) の条件を満たすよう,しおんさんが率先して議論をリードして下さい。

あちらではどんなアドバイスをもらって,しおんさんは今何を調べ,どんな状況になっているのですか。そして,こちらとしては何を答えれば良いのでしょうか。

7   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
Pidさん、回答ありがとうございます。

>今回の場合,(1) と (2) は OK ですので,あとは (3) の条件を満たすよう,しおんさんが率先して議論を
>リードして下さい。

あせってしまい申し訳御座いません。
あちらでも訳を記述し、こちらで回答を得るようにしました。


>あちらではどんなアドバイスをもらって,しおんさんは今何を調べ,どんな状況になっているのですか。
>そして,こちらとしては何を答えれば良いのでしょうか。

あちらでは、
"クリックしたらは<onclick>、テキストを入れるは<getElementById>といったキーワードで
調べてみると色々情報が出てくると思いますよ。"
のアドバイスをもらいました。

残りの不明点を下記に記述します。

画面のボタン(ボタンでなくてもよいですが)をクリックされた時、
ボタン上のNAMEを"○"から"◎"に変更する
事を行いたいです。

画面のボタン(ボタンでなくてもよいですが)をクリックされた時、
テキストの表示を"○"から"◎"に変更する事はできましたが、
ボタン自身のNAMEの変更を行いたいのです。

長くなりましたが何かアドバイスお願いします。

8   名前: Pid : 2006/07/14(金) 13:47  ID:Qxkv0vOT
> ボタン自身のNAME

・ボタンとは何のことで(input 要素? button 要素? a 要素?)
・NAME とはどの部分でしょうか(name 属性値が "◎" とは考えにくいので,value 属性値? それともテキスト部分?)。

実際にお書きになったソースを見せて下さい。また,どういう場面でその仕組みが必要になるのかも教えて下さい(使用場面によって,考慮すべき事項が変わってきます)。


----

なお,基本的な用語に関して,

30 分間 HTML 入門
http://www.kanzaki.com/docs/html/lesson1.html

JavaScript の書き方・使い方
http://www.marguerite.to/Nihongo/HowToMakeYourWeb/JavaScript/HowToJavaScript.html

に目を通しておいて下さい。これらの知識が前提になります。

9   名前: Z ◆XTzyosZXcL : 2006/07/14(金) 13:47  ID:40gfkXbO
 A要素のname属性のことでしたら、「アルファベット([A-Za-z])で開始し、任意の数のアルファベット、数字、([0-9])、ハイフン(-)、アンダースコア(_)、コロン、(:)、ピリオド(.)のみで記述する必要が」あり、「値に大文字小文字の区別がある。すなわちユーザエージェントは「a」と「A」とを異なるものと解釈」します。つまり、NAME属性の値を「"○"から"◎"に変更する」ことは仕様書上NGです("○"から"◎"といった2バイト文字が使えないため)。

仕様書該当部分:
http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/struct/links.html#h-12.2
http://www.w3.org/TR/html401/struct/links.html#h-12.2

#他の要素で使われているname属性も基本は一緒です。ただ、大文字小文字の区別についてはあったりなかったりします。

10   名前: Pid : 2006/07/14(金) 13:47  ID:Qxkv0vOT
>>9
HTML 4.01 仕様ならば,a 要素の name 属性の値は ID/NAME ではなく CDATA ですから,文字種制限はないはずでは(XHTML 1.0 の場合は NMTOKEN)。

もちろん,アンカー名として用いる name 属性は id 属性と同じである必要がありますので,結果的に id 属性と同じ制限を被ります(12.1,12.2.3),
http://openlab.ring.gr.jp/k16/htmllint/explain.html#unsafe-fragment-id
http://openlab.ring.gr.jp/k16/htmllint/explain.html#diff-id-link

11   名前: Z ◆XTzyosZXcL : 2006/07/14(金) 13:47  ID:40gfkXbO
>>10
 あ、そうでしたか。CDATAの説明の後にNAMEトークンについての記述があるので、name属性はてっきりNAMEトークンのルールに従うのかと思ってました。ご指摘感謝です。

12   名前: しおん : 2006/07/14(金) 13:47  ID:33WYuWCl
Pid様、Z様回答ありがとうございます。
さっそく内容の確認をします。

>>8
>どういう場面でその仕組みが必要になるのかも教えて下さい
>使用場面によって,考慮すべき事項が変わってきます)。

やりたい事はカレンダーベースのスケジュール管理で、
例えば打合わせは"○"・打合わせキャンセルは"◎"だとすると、
カレンダーの1日をクリックすると"空白"から"○"へ、
又キャンセルがあったのでクリックすると"○"から"◎"へ変更
のような仕組みを行ないたいのです。
説明に不備がありましたらすみません。

ソースについてはまだ組めない状態でいます。
出来次第見せたいと思います。

申し訳ありませんが何かご教授願います。

13   名前: かふぇおれ : 2006/07/14(金) 13:47  ID:Ji0blfRq
GACを見たので、こっちの方に書くのも変かなと思いつつ…

<html>
<head>
<title>スケジュール確認</title>
<script type="text/javascript">
<!--
flag = '1' ;
function change(n){
ID = "sch" + n ;
if (flag == n +'1') {
str = "ひまだよ"; flag = n +'0' ;
}else{
str = "予定あり"; flag = n +'1' ;
}
document.all[ID].innerText = str;
}
// -->
</script>
<style type="text/css">
<!--
.list_find {  font-size: 10px; color: #FFFFFF; background-color: #666666; text-align: center}
.d_sat {  font-size: 12px; color: #0033CC; background-color: #DDFFFF; text-align: center; height: 16px; width: 60px; border: #666666; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px}
.d_holiday { font-size: 12px; color: #FF0000; background-color: #FFDDDD; height: 16px; width: 60px; text-align: center ; border: #666666; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px}
.d_others {  font-size: 12px; text-align: center; height: 16px; width: 60px; border: #666666; border-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px}
.schedule {  font-size: 12px; background-color: #FFFFDD; text-align: center; width: 100px}
-->
</style>
</head>


#「長い」って言われたので続く

14   名前: かふぇおれ : 2006/07/14(金) 13:47  ID:Ji0blfRq
#続きです。

<body bgcolor="#FFFFFF" text="#000000" width=300>
予定は?(日付をクリック)
<table border="0" cellspacing="2" cellpadding="0">
  <tr> 
    <td class="list_find">日付</td><td class="list_find">しおん</td>
    <td class="list_find">日付</td><td class="list_find">かふぇおれ</td>
  </tr>
  <tr> 
    <td class="d_sat" onclick="change(1)"> 7/15</td><td class="schedule" id="sch1">未定</td>
    <td class="d_sat" onclick="change(8)"> 7/15</td><td class="schedule" id="sch8">未定</td>
  </tr>
  <tr> 
    <td class="d_holiday" onclick="change(2)">7/16</td><td class="schedule" id="sch2">未定</td>
    <td class="d_holiday" onclick="change(9)">7/16</td><td class="schedule" id="sch9">未定</td>
  </tr>
  <tr> 
    <td class="d_holiday" onclick="change(3)">7/17</td><td class="schedule" id="sch3">未定</td>
    <td class="d_holiday" onclick="change(10)">7/17</td><td class="schedule" id="sch10">未定</td>
  </tr>
  <tr> 
    <td class="d_others" onclick="change(4)">7/18</td><td class="schedule" id="sch4">未定</td>
    <td class="d_others" onclick="change(11)">7/18</td><td class="schedule" id="sch11">未定</td>
  </tr>
  <tr> 
    <td class="d_others" onclick="change(5)">7/19</td><td class="schedule" id="sch5">未定</td>
    <td class="d_others" onclick="change(12)">7/19</td><td class="schedule" id="sch12">未定</td>
  </tr>
  <tr> 
    <td class="d_others" onclick="change(6)">7/20</td><td class="schedule" id="sch6">未定</td>
    <td class="d_others" onclick="change(13)">7/20</td><td class="schedule" id="sch13">未定</td>
  </tr>
  <tr> 
    <td class="d_others" onclick="change(7)">7/21</td><td class="schedule" id="sch7">未定</td>
    <td class="d_others" onclick="change(14)">7/21</td><td class="schedule" id="sch14">未定</td>
  </tr>
</table>
</body>
</html>


…こういう事なのでしょうか?
でもこれだったらフリーCGIの方が良い気も…

15   名前: Pid : 2006/07/14(金) 13:47  ID:kvNAjtGb
日付部分をクリックすると対応する下の欄が変化します。フォーム送信などは考慮していません。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Calendar</title>

<script type="text/javascript">

// とりあえずの古いやり方(ブラウザの種類によってはもう少し柔軟に書ける)
onload = function () {
     var table = document.getElementsByTagName ('table')[0];
     var th = table.rows[0].cells;
     
     for (var i = 0, I = th.length; i < I; i++)
         th[i].onclick = function () {
             var row = this.parentNode;
             var table = row.parentNode;
             var td = table.rows[row.rowIndex + 1].cells[this.cellIndex];
             var text = td.firstChild;
             
             switch (text.data) {
             case ' ' : text.data = '○'; break;
             case '○' : text.data = '◎'; break;
             case '◎' : text.data = ' '; break;
             }
         };
};
</script>

<h1>Calendar</h1>

<table>
<tr><th>1 日</th><th>2 日</th><th>3 日</th><th>4 日</th></tr>
<tr><td> </td><td> </td><td> </td><td> </td></tr>
</table>


ただ,私も >>14 のかふぇおれさんと同じく,CGI を使った方が良いような気がします(データ編集後に保存が必要なら尚更です)。

まずは,どういう表にするのかを決めて下さい(ここまでは HTML の領域)。

その後,使用場面に応じて,

・CGI にすべきなのか(e.g. 不特定多数の利用,データの保存が必要)
・J(ava)Script で十分なのか(e.g. 特定の人のみ使用,データ保存の必要なし)
・ご自分でメンテナンスしていけそうか

などを考慮しつつ,全体像を設計して下さい。

16   名前: かふぇおれ : 2006/07/14(金) 13:47  ID:Ji0blfRq
…あぅ…Pidさんのscriptの方が格好いい。
因みにMac OS9 + IE では動きませんでした(涙

#そんなユーザーは相手にしないとかは言わないで。

17   名前: Pid : 2006/07/14(金) 13:47  ID:WN/kp9So
>>16
おお,検証ありがとうございます (^^)。>>15 は JavaScript 1.2+ + DOM Level 1(Core + HTML)相当を想定しています。

MacIE 5.x の場合,インデントに空白ではなくタブを使わねば動作しない(あるいはインデントと改行を削除しないと動かない),という報告を受けたことがありますが,いかがでしょうか。

MacIE 4.x の場合,DOM1 を実装していたか覚えていないので,ちょっと考えてみます(getElementsByTagName のエミュレーションは簡単ですが,HTMLTableElement は考え直さないといけないかもしれない)。

18   名前: かふぇおれ : 2006/07/14(金) 13:47  ID:Ji0blfRq
>>17 Pidさん
検証という訳ではありませんが、>>15 のscriptが動かない(途中で止まる)訳が解りました。

script の問題ではなく、表示テキストの'○'や'◎'が文字化けするのでした(w
途中にalert(text.data);と入れてみた所、alert表示には見事に'笳'と表示されました。

画面表示上では'○'や'◎'と表示されている所から、これはscript中での文字コード等の解釈に問題があるという事なのでしょうか?
…私には難しすぎる問題です。

#便乗して>>13 >>14 の事で質問したいのですが、別スレッドに移った方が良いでしょうか?

19   名前: Pid : 2006/07/14(金) 13:47  ID:1cTqKp7X
>>18
かふぇおれさん,ありがとうございます。

実は私も MacIE に関して伺いたいことがありますので,別スレッドを立てて下さると幸いです(そもそもが板違いなのをここまで引っ張ったのは私の責任です(^^;))。

一覧へ戻る