文字数のカウントについて

Test


0   名前: 匿名 : 2006/06/24(土) 21:10  ID:rjD4NYjY
初歩的な質問ですがよろしくお願いします。

"A"というSELECTタグがある時にそのSELECTタグ内の一番初めの文字数を調べたいのですが、どのように記述すればよろしいのでしょうか?

私が記述したものは"(document.form1.A.options[0].value).lenght"ですがうまく文字数が取れません
色々試してみたのですが、どなたか宜しくお願いします。

1   名前: NullPo : 2006/06/24(土) 21:10  ID:XoE1slt9
valueがないんじゃないか、とか、文字列数を取得するなら、
.lenghtメソッドというのを自前で用意しなくても
String.lengthメソッドがあるんじゃないかとか思うけど、
環境が同じなら、
A.options[0].text.length (A.options[0].value.length
でできそう。

2   名前: NullPo : 2006/06/24(土) 21:10  ID:XoE1slt9
lengthはメソッドじゃなかった。orz

3   名前: 牛若 : 2006/06/24(土) 21:10  ID:TQe.YekE
>>1.
>"A"というSELECTタグがある...

どういうことですか?

>>2
>A.options[0].text.length

どういうことですか?
こんな記法はないでしょ。


4   名前: NullPo : 2006/06/24(土) 21:10  ID:XoE1slt9
>>3
Aというselectタグがあるっていうのだから、そのselectタグを表すのにAを使えばいいのでしょう。
Aは変数で、selectタグを指すと理解すればいいかと。

記法があるかどうか知らないけど、環境が同じならできそう。
記法がなさそうなら私に言わず、>>0に使えそうなのを教えてあげてください。

5   名前: 牛若 : 2006/06/24(土) 21:10  ID:BEqkv9Ka
>>4
>Aというselectタグがあるっていうのだから、そのselectタグを表すの
>にAを使えばいいのでしょう。
とすると、
if(selectTag=='A')
ということですか?

>記法があるかどうか知らないけど、環境が同じならできそう。

DOMって一体なんですか?



6   名前: Pid ◆byEkK9OALr : 2006/06/24(土) 21:10  ID:Vi/2deH/
私もまだ質問の意味が分からないのですが。

とりあえず、ある範囲のテキストノードの集合値を取得したいのなら、DOM2-Range を使って

if (document.implementation
  && document.implementation.hasFeature ('Range', '2.0'))
{
    var select = document.forms['form1'].elements['A'];
    var range = document.createRange ();
    range.setStartBefore (select.options[0]);
    range.setEndAfter (select.options[2]);
    alert (range.toString ());
}


で、最初から 3 番目までの option 要素のテキストデータを取得できます(IE の場合は innerText でも使って下さい)。


>>3
> 記法がなさそうなら私に言わず、

いいえ、その記法を提示したのは NullPo さんですから、牛若さんの疑問に答える義務があります。

7   名前: Pid ◆byEkK9OALr : 2006/06/24(土) 21:10  ID:Vi/2deH/
ごめんなさい、アンカーミスです。
>>3 → >>4


>>0
> (document.form1.A.options[0].value).lenght

単純にスペルミスじゃないか等いろいろ疑問がありますが、まずは
・どういう状況なのか
・何がしたいのか
・何が問題なのか(特に、どういうエラーが出るのか)
・どうなれば良いのか
・現在書いているコード
を、できるだけ詳しく提示して下さい。

8   名前: NullPo : 2006/06/24(土) 21:10  ID:1Bb3RL38
>>5
>if(selectTag=='A')
>ということですか?
いや違うでしょう。その「selectTag」っていうのがどこから出てきたのかさっぱりわかりません。
文中で言うSELECTタグは、== Aであってると思います。

>DOMって一体なんですか?
自分で調べてください。

>>6
>いいえ、その記法を提示したのは NullPo さんですから、牛若さんの疑問に答える義務があります。
100%、義務は発生しません。これは間違いなく言い切れます。
そもそも、Aについては私ではなく>>0に聞いて欲しいですし、
「どういうことですか?」は、「こんな記法はないでしょ。」に続き、
これは疑問ではなく、批判ととらえていいでしょう。
また、ない、もしくは使うべきでないというのなら、代替案を提出するべきです。

9   名前: 牛若 : 2006/06/24(土) 21:10  ID:6lbxVtO2
>>8
要するに、わけもわからず、前提もなしに、脳内で、動きもしない、
一見コード(風)に見える、横文字をドットで繋いで、表記してるだけ。

なんの答えにもなってない。

10   名前: 神崎 : 2006/06/24(土) 21:10  ID:Ss45EgCa
討論するなら新しいスレッドを建ててください


> No.0
> 私が記述したものは"(document.form1.A.options[0].value).lenght"ですがうまく文字数が取れません
カッコをはずして
document.form1.A.options[0].value.length
とするとどうなりますか?

ついでにlengthではなくlenghtなのは、BBS投稿時の記述ミスでしょうか?
もし実際に使用しているソースからのコピペなら、スペルミスでしょう。


また、「うまく文字数が取れない」とはどういう状態でしょうか。
エラーとなってスクリプトが進まないのか、
5と表示してほしいのに3や別の数字が表示されるのか、
たとえば
document.form1.A.options[0].valueと
document.form1.A.options[0].textは違う物ですが、とり違えていないか、
日本語の1文字を2バイト(length 2)とするか1文字(length 1)と数えるかはブラウザ依存ですが、
新しいブラウザではほとんど1文字と数えます。
この違いが、「文字数としてのlength」「バイト数としてのlength」で差が出てきます。

エラーとなってスクリプトが進まないのであれば、上記の通りスペルミスと思います。

11   名前: NullPo : 2006/06/24(土) 21:10  ID:XoE1slt9
>>9
前提は存在しました。これです。
"(document.form1.A.options[0].value).lenght"
元となるコードがある以上、新規作成ではなく修正を施すべきだと考えます。

>なんの答えにもなってない。
あなたこそなのですが、そのあたりどうお考えでしょうか?
そして私はこれが答えだといいましたか?
一例を提出しただけです。その後は>>0の仕事です。

>>10
>討論するなら新しいスレッドを建ててください
すみません、こんなことでたてていいのか不明で。
その勇気がないです。orz

12   名前: 匿名 : 2006/06/24(土) 21:10  ID:zqn32COP
>>11
>>討論するなら新しいスレッドを建ててください
>すみません、こんなことでたてていいのか不明で。
http://www.tagindex.com/cgi-lib/bbs/patio.cgi?mode=view&no=146

13   名前: Pid ◆byEkK9OALr : 2006/06/24(土) 21:10  ID:Vi/2deH/
>>8
> 100%、義務は発生しません。これは間違いなく言い切れます。

NullPo さんのスタンスは了解しました。別件ついでに、

> 文中で言うSELECTタグは、== Aであってると思います。

さすがにこれでは意味が分かりませんです。select「要素(タグではない)」の name「属性」が 「A」である、ということですよね。

> > DOMって一体なんですか?
> 自分で調べてください。

タグ付き文字列を直接操作するのではなく、パース済み文書を安全に扱うためのインタフェースです。原則として文書をツリー構造と見なし、各ノードをオブジェクトとして扱うことができます。

DOM はあくまでインタフェースに過ぎませんから、ブラウザがネイティブサポートしていなくとも、既存の仕組みを元にある程度まで自前で実装することができます。e.g. WinIE、MacIE で DOM2-Events、DOM2-Traversal 等を真似るライブラリ。

>>10
> 日本語の1文字を2バイト(length 2)とするか1文字(length 1)と数えるかはブラウザ依存ですが、新しいブラウザではほとんど1文字と数えます。

DOM 仕様では文字列を UTF-16 で、ECMA 仕様では UTF-8 で扱うことになっています。



本題としましては、>>1、>>7、>>10 でさまざまな可能性が挙がっていますので、質問者さんにもう少し状況を整理してほしい所です。

14   名前: NullPo : 2006/06/24(土) 21:10  ID:1Bb3RL38
>>13
>さすがにこれでは意味が分かりませんです。select「要素(タグではない)」の name「属性」が 「A」である、ということですよね。
私はそうは認識していない。
Aは特定の「SELECTタグ」自体を指すと認識している。
実際にはどういう意味だったのかは>>0に聞いてください。

15   名前: Pid ◆byEkK9OALr : 2006/06/24(土) 21:10  ID:hxQdbF1d
>>14
> 私はそうは認識していない。
> Aは特定の「SELECTタグ」自体を指すと認識している。

なるほど、仰りたいことは朦げながら分かりました。ならば、まさに >>3 で牛若さんが指摘なさったように、>>1 の回答は間違いとなります。なぜなら、select「タグ」は、開始タグであっても終了タグであっても、options などというプロパティを持ちえないからです。

タグと要素、およびノードの区別はおつきですか。この点で、私は >>6 で NullPo さんご自身による補足が必要だと感じたのです。


で、仮に select 要素ノードの話だとしても、それは select[@name="A" or @id="A"](XPath 式で失礼)とどう違うのですか?それとも、//select で得られる全ての select 要素の中の「特定しない」一つ、ということですか?

私と NullPo さんの認識のズレをまず正しつつ、質問者さんの補足を待ちましょう。

16   名前: NullPo : 2006/06/24(土) 21:10  ID:1Bb3RL38
>>15
「SELECTタグ」という言葉は文中から取り出したものに過ぎない。
それが実際になんであるかは言葉を分解することによっては意識しない。
>私と NullPo さんの認識のズレをまず正しつつ、質問者さんの補足を待ちましょう。
質問者さんの補足が入ればそれによって大きく展開が変わるであろうから、
認識のズレを正すことに意味はないと考える。

17   名前: Pid ◆byEkK9OALr : 2006/06/24(土) 21:10  ID:JvNDE7tr
>>16
http://www.tagindex.com/cgi-lib/bbs/patio.cgi?mode=view2&f=146&no=50

一覧へ戻る