人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

環境はWindowsXP。JavaScriptでファイルリストを動的に作ることはできませんでしょうか?できないのであれば、別の方法も併せて紹介していただきたくよろしくお願いします。


●質問者: harunoharuno
●カテゴリ:コンピュータ
✍キーワード:JavaScript WindowsXP ファイル リスト 環境
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● Mook
●100ポイント ベストアンサー

JavaScript というよりは JScript なので、Windows でしか動作しませんが、フォルダを表示する例です。

D ドライブが無い場合は、<BODY onload="listFiles('C:\\');"> に変えて試してみてください。

下記を適当な名前の HTML ファイルに保存し起動すると、フォルダとファイルの一覧を表示します。

フォルダをクリックすると、そのフォルダの一覧表示に変わります。

<HTML>
<HEAD>
<STYLE type="text/css">
<!--
th { background-color:#000099; color:#FFFFFF; }
td.folder { background-color:#FFFFE0; color:#0000FF}
td.file { background-color:#F0F0F0; }
-->
</STYLE>

<SCRIPT type="text/JavaScript">
// フォルダ下のフォルダ・ファイル一覧表示
function listFiles( rootPath ) {
 var fs = new ActiveXObject("Scripting.FileSystemObject");
 clearList();

 document.getElementById("title").innerHTML = "<H3>" + rootPath + "</H3>";

 // フォルダ一覧表示
 var f = fs.GetFolder( rootPath );
 if ( typeof(f.ParentFolder ) != "undefined" )
 if ( f.ParentFolder != null )
 addFolder( "親フォルダへ戻る", f.ParentFolder.Path );

 // ファイル一覧表示
 var fc = new Enumerator(f.SubFolders);
 for (; !fc.atEnd(); fc.moveNext())
 addFolder( fc.item().Path, fc.item().Path );

 fc = new Enumerator(f.files);
 for (; !fc.atEnd(); fc.moveNext())
 addFile( fc.item().Path );
}

// テーブルにフォルダを追加
function addFolder( dspPath, folderPath ) {
 var tr, td;
 var tbody = document.getElementById("fileList");
 tr = tbody.insertRow(tbody.rows.length);
 td = tr.insertCell(tr.cells.length);
 td.setAttribute("className","folder");
 td.innerHTML = "<A onclick=\"listFiles('" + folderPath.replace(/\\/g,'\\\\') + "');\">" + dspPath + "</A>"
}

// テーブルにファイルを追加
function addFile( filePath ) {
 var tr, td;
 var tbody = document.getElementById("fileList");
 // node tree
 tr = tbody.insertRow(tbody.rows.length);
 td = tr.insertCell(tr.cells.length);
 td.setAttribute("className","file");
 td.innerHTML = filePath;
}

// テーブルをクリア
function clearList() {
 var tbody = document.getElementById('fileList');
 for ( var i = tbody.rows.length - 1 ; i >0 ; --i ) {
 tbody.deleteRow( i );
 }
}

</SCRIPT>
</HEAD>
<BODY onload="listFiles('D:\\');">
<DIV align="center">
 <DIV id="title"></DIV>
 <TABLE id="fileList" border="1" width="90%">
 <TR><TH align="center">パス</TH><TR>
 </TABLE>
</DIV>
</BODY>
</HTML>

ご参考までに。

http://www.tohoho-web.com/js/index.htm

◎質問者からの返答

WSHとかで実現可能なのかなぁと考えておりましたが、JScriptというのがあるんですね。

コードも入れていただき大感謝です。有難うございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ