>>0
普通に document.write() で書き出せば良いのでは。もっとも、どこの何を通し番号にするのか不明なのですが。
<p>
<script type="text/javascript">
var source = [ '<select>' ];
for (var i = 1; i <= 100; i++) {
source.push ('<option>', i, '<\/option>');
}
source.push ('<\/select>');
document.write (source.join (''));
</script>
</p>
また、>>1 の言う通り、非スクリプト環境では無意味です。
>>1
細かいことですが、XHTML を書くなら名前空間の指定を絶対に忘れないで下さい。これは XHTML の文法のみならず、document.forms、document.write()(要するに DOM HTML)を使用できるかどうかにも関わります。
# 更にうるさいことを言えば、XHTML の script 要素内で「<」と「&」を書いてはいけない。
スレ違いながら、最近のメジャーブラウザはクライアント側 XSLT に対応しているので、こんなのでもやれないことはない。
<!-- xmlns:xhtml="http://www.w3.org/1999/xhtml" -->
<xsl:template match="xhtml:select">
<xsl:element name="select" namespace="http://www.w3.org/1999/xhtml">
<xsl:call-template name="output.option"/>
</xsl:element>
</xsl:template>
<xsl:template name="output.option">
<xsl:param name="index" select="number(1)"/>
<xsl:element name="option" namespace="http://www.w3.org/1999/xhtml">
<xsl:attribute name="value">
<xsl:value-of select="$index"/>
</xsl:attribute>
<xsl:value-of select="$index"/>
</xsl:element>
<xsl:if test="$index < 100">
<xsl:call-template name="output.option">
<xsl:with-param name="index" select="$index + 1"/>
</xsl:call-template>
</xsl:if>
</xsl:template>