slide.js 3日目
うまくいかねーす。
スライド1ページ対応するdiv要素の中身をそのままinnerHTMLにしたいだけなのに
[object HTMLDivElement]になるorz
誰か助けて。
テストを楽にするために、早速ショートカットを実装。
自分で1から実装するのはめんどいから、shortcuts.jsを使った。
shortcuts.jsを使ったのは、KeyTypeListener.jsより軽かったから。
HTML側のJavaScriptコードはできるだけ取り除き、動的に注入予定。
slide.js
/* * slide.js * @version: 2007/05/05 * @author: futa23 */ // Slide class function Slide() { this.initialize.apply(this, arguments); } // Slide class Slide.prototype.initialize = function() { this.main; this.contents = new Array(); this.page = 0; }; Slide.prototype.start = function(){ //load slide base element this.main = document.getElementById('main'); document.getElementById('startBtn').disabled = true; var divPages = document.getElementsByTagName('div'); for (var i=0; i<divPages.length ; i++) { if (divPages[i].className == 'page') { this.contents.push(divPages[i]); divPages[i].innerHTML = ''; } } }; Slide.prototype.next = function() { // if(!main) this.main = document.getElementById('main'); // alert(this.contents.length); if (this.page < this.contents.length) { this.main.innerHTML = this.contents[this.page++]; //last action if (this.page == this.contents.length) { document.getElementById('nextBtn').disabled = true; } } } Slide.prototype.quit = function() { // var normalContent = ''; // if (typeof(this.main) != 'undefined') { // for(var i=0; i<this.contents.length; i++) { // normalContent += this.contents[i]; // } // alert(normalContent); // this.main.outerHTML = normalContent; // } } //app var slide = new Slide();
呼び出すHTML側
ちょっと見栄えをよくするために、内容をテキトーに付加。
<html> <head> <title>プレゼンツール</title> <STYLE TYPE="text/css"> <!-- A:link { color:#0ac0ff; text-decoration:none; } A:visited { color:#5080e0; text-decoration:none; } A:hover { color:#2ae0ff; text-decoration:underline;} --> </STYLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"> <script type="text/javascript" language="JavaScript" charset="utf-8" src="shortcuts.js"></script> <script type="text/javascript" language="JavaScript" charset="utf-8" src="slide.js"></script> <script type="text/javascript"> //add keybind shortcut('s', function(){slide.start();}); shortcut('n', function(){slide.next();}); shortcut('q', function(){slide.quit();}); </script> </head> <body bgcolor="#FFFFFF" text="#003366" link="#3399FF" vlink="#99CCFF" alink="#FF3333"> <input type="button" value="start!" id="startBtn" onclick="slide.start()"> <input type="button" value="next!" id="nextBtn" onclick="slide.next()"> <div id="main" class="main" onClick="slide.next()"> next </div> <div id="1" class="page"> <h3>自己紹介</h3> <ul> <li>名前:futa23 <li>職業:SEでもプログラマーでもないIT系 <li>装備:Java(普通に), PHP(並以下), Perl(並以下), Ruby(初心者) </ul> </div> <div id="2" class="page"> <h3>slide.js</h3> スライドショーアプリ。 <ul> <li>oopなJavaScriptを書いてみたかった。 <li>作るなら実用的なもの。 <li>他のライブラリも使ってエフェクトも掛けたい。 <li>ショートカット厨なので、ショートカット機能は必須実装機能。 <li>HTML表示モードとプレゼンモードの切り替えができるように。 </ul> </div> </body> </html>