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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/12/03 16:59:31
  • 終了:2007/12/08 00:16:08

ベストアンサー

id:Mook No.1

Mook回答回数1312ベストアンサー獲得回数3912007/12/03 18:57:48

ポイント100pt

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

id:harunoharuno

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

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

2007/12/08 00:15:44

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません