_<option />
_タグのテキストコンテンツのグループを作成したいと思います。次のようなものがあるとします:<option>8:00 (1 hour)</option>
、時間パターン_8:00
_を変更でき、括弧内のテキスト_(1 hour)
_も変更できます。
私は次のようなことをすることを考えていました
_<option>
<span>8:00</span>
<span> (1 hour)</span>
</option>
_
_<span />
_タグを_<option />
_タグ内に配置するのは良くありません。スタイリングではなく文字列操作のためだけですか?
HTML 4.01仕様から:
_<!ELEMENT OPTION - O (#PCDATA) -- selectable choice -->
_
HTML 5ドラフト仕様から:
コンテンツモデル:テキスト。
(HTML 3.2およびHTML 2の仕様でも、<!ELEMENT OPTION - O (#PCDATA)*>
と書かれています)
オプション要素に子要素を含めることはできません。はい、それは悪いです。
Javascriptプラグインを使用して、この制限を克服できます。たとえば、jQueryプラグイン "Select2" Select2プラグインホームページ 。私はいくつかのプロジェクトで使用していますが、かなり柔軟で便利だと思います。
それらの多くがありますが、それらはまったく同じことを行います-従来の<select>
into <div>
ブロックは追加機能を備えています。
コンテンツモデル:テキスト
いいえ、大丈夫ではありません。必要に応じて値を再構成できるように、スクリプト内で値を保持することを検討してください。
これを行うには、<select>
の代わりにHTMLを使用することをお勧めします。
他の人によって確立されたように、私は<b>
と他のタグを試しましたが、<option>
はその中にタグを取りません。
<span>
タグ内で<option>
を使用できないため、できること
インデックス番号を使用して、テキストを抽出することができます
document.getElementById(selectid).options [x] .textここで、xは変数としての関連インデックスです。
次に、「(」を使用して変数を時間に分割し、最後の文字も削除して「)」を削除します
サンプル:
<script type="text/javascript">
function extractSelectText()
{
var text = document.getElementById("main").options[1].text
/*
var tlength = text.length
var splitno = tlength - 1
var text2 = text.slice(0, splitno)
var textArray = text2.split(" )")
var time = textArray[0]
var hours = textArray[1]
}
</script>
変更ははるかに簡単です。
<script type="text/javascript">
function changeSelectText()
{
/* add your code here to determine the value for the time (use variable time) */
/* add your code here to determine the value for the hour (use variable hours) */
var textvalue = time + " (" + hours + ")"
document.getElementById("main").options[1].text
}
</script>
For関数を使用する場合、selectの各値を変更して1を2、3などに置き換え、一定の間隔関数を設定して、常に更新することができます。
編集のための1つのオプションは、コンテンツを更新するためにいくつかの派手なパターンマッチングを使用することです。それはより遅く、より多くのリソースを消費し、フォーマットがどれほど規則的であるかに依存しますが、HTMLの修正を必要としません。しかし、私の懸念は、アクセシビリティとユーザーエクスペリエンスにあります。スクリーンリーダーソフトウェアが値を変更することは困難であり、他のユーザーを混乱させる可能性もあります。