プロが教える店舗&オフィスのセキュリティ対策術

下記のソースがあります。

<SCRIPT TYPE="text/javascript">
<!--
function Change(id){
if(document.all){
document.all.result.innerHTML = document.all(id).innerHTML;
}else if(document.getElementById){
document.getElementById('result').innerHTML = document.getElementById(id).innerHTML;
}
}
//-->
</SCRIPT>
<a href="#" onClick='Change("ih2"); return false'>前</a><br>
<a href="#" onClick='Change("ih3"); return false'>次</a><br>

<div id="ih2" style="display:none">テキスト1</div>
<div id="ih3" style="display:none">テキスト2</div>
<br>
<span id="result"></span>

前、次のリンクで表示されるテキストが切り替わるようにしているのですが、
クリックする前の段階では何も表示されていない状態です。

そこで、クリックする前でもid="ih2"の「テキスト1」が表示されている状態にしたいのですが、
なかなか出来ません。

functionの前に
document.all.result.innerHTML = document.all.ih2.innerHTML;
と記述してみましたが駄目でした。

id="ih2"の値を読み込んで表示させたいのですが、
何か良い方法はありませんか。

A 回答 (2件)

<span id="result"></span>



の行より下に、以下を追加してみてください。

<SCRIPT TYPE="text/javascript">
<!--
Change("ih2");
//-->
</SCRIPT>

ポイント: id="result" の発行より先に document.all.ih2.innerHTML を実行させても無効です。

余談: document.all は業界標準規格に無いらしいので、業界標準の document.getElementById 1本に絞ってはいかがでしょうか。
    • good
    • 0
この回答へのお礼

ありがとうございます!!!!!!!

とても助かりました&勉強になりました。

<SCRIPT TYPE="text/javascript">
<!--
document.getElementById('result').innerHTML = document.getElementById(id).innerHTML;
function Change(id){
document.getElementById('result').innerHTML = document.getElementById(id).innerHTML;
}
//-->
</SCRIPT>

これを、id="result"の下に書いても動くんですね!
アドバイス通り、document.getElementById 1本にしたいと思います(´∀`人)

お礼日時:2008/12/19 20:49

似たように機能すると思いますが、こんなのはどうでしょう?


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>TEST</title>
<p id="chk">
<a href="#" class="before">前</a><br>
<a href="#" class="next">次</a><br>
</p>
<div id="page">
<div>テキスト1</div>
<div>テキスト2</div>
<div>テキスト3</div>
<div>テキスト4</div>
<div>テキスト5</div>
</div>

<script type="text/javascript">
//@cc_on
a = new viewPage('page');
document.getElementById('chk')./*@if(1)attachEvent('on'+ @else @*/addEventListener(/*@end@*/'click', function( evt ){
var element = evt.target || evt.srcElement;
if(!element.className) return;
if( element.className.match(/\bnext\b/) ) a.next();
if( element.className.match(/\bbefore\b/) ) a.before();
}, false);

function viewPage( elementId, defaultPage){
this.next = function(){ if( this.page < this.nodes.length-1 ) this.set( ++this.page ) }
this.before = function(){ if( this.page > 0 ) this.set( --this.page ) }
this.set = function( p ){
var i=0, n; this.page = p++;
while( n=this.nodes[i++] ) if( n.nodeName=='DIV' ) n.style.display = i==p? 'block': 'none';
}
this.nodes = document.getElementById( elementId ).childNodes;
this.set( defaultPage == undefined ? 0: defaultPage );
}
</script>
    • good
    • 0
この回答へのお礼

すごいです!!!!!

JavaScript初級者の自分にはどういう処理なの解析できません(汗
もっと勉強します!!

解析して使いこなせるようになります(`・ω・´)

お礼日時:2008/12/19 20:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!