Solved

Dynamically creating list of files in a folder

Posted on 2007-11-28
3
3,334 Views
Last Modified: 2013-11-19
Hi Experts.

I am trying to show the files in a folder that is selected then when the user makes a selection generate a list of files in a listbox if the selection is a folder. When I click ion the 'show selected' button, The status bar tells me there is an error on the page. For testing purpose I call a function to display a message on the click event.

What am I doing wrong?
<HTML>
<HEAD>
<TITLE>"List of Folders"</TITLE>
</HEAD>
 
<script LANGUAGE="JavaScript">
 
doc = "";
 
<!----- Function ListOfFilesInAFolder - List files and folders in fldr -----
function ListOfFilesInAFolder(fldr) 
{
 fso = new ActiveXObject("Scripting.FileSystemObject");
 folder = fso.GetFolder(fldr);
 fc = new Enumerator(folder.subfolders);
 allfiles="";
document.write("<form name='frm1'>")
document.write("<select name='mySelect' size=15>")
for(;!fc.atEnd();fc.moveNext()) 
 {
	doc=fc.item()
	document.write("<option value='"+doc+"'>"+doc+"</option>")
 }
document.write("</select>")
document.write("<p><input type='button' value='show selected..' onClick='ListDocs(this.form);'</p>")
document.write("</form>")
}
 
 
 
<!---- Function Listdocs - List Files and Folders in made selection formObj  ----
function ListDocs(formObj){
output = "";
 
for(var i = 0; i < formObj.mySelect.options.length; i++){
   if(formObj.mySelect.options[i].selected){
     output += ", " + formObj.mySelect.options[i].value;
   }
 }
output = output.substring(2); 
fso = new ActiveXObject("Scripting.FileSystemObject");
folder = fso.GetFolder(output);
fc = new Enumerator(folder.subfolders);
 
document.write("<form name='frm1'>")
document.write("<select name='mySelect' size=15>")
for(;!fc.atEnd();fc.moveNext()) 
 {
	doc=fc.item()
	document.write("<option value='"+doc+"'>"+doc+"</option>")
 }
document.write("</select>")
document.write("<p><input type='button' value='show Select..' onClick='dply();' </p>")
document.write("</form>")
 
}
 
 
<!--- Function to test the onclick event in funtion ListDocs ---- 
function dply(){
alert("Test");
}
 
ListOfFilesInAFolder("C:\\");
</script>
 
</HTML>

Open in new window

0
Comment
Question by:tigger40ks
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 14

Accepted Solution

by:
B_Dorsey earned 125 total points
ID: 20371657
I rewrote your code cause it had extra code, Im sure you can get what you want out of what I have supplied.

b
<HTML>
<HEAD>
<TITLE>"List of Folders"</TITLE>
</HEAD>
 
<script LANGUAGE="JavaScript">
doc = "";
function ListOfFilesInAFolder(fldr){
 var sForm = document.frm1.mySelect
 fso = new ActiveXObject("Scripting.FileSystemObject");
 folder = fso.GetFolder(fldr);
 fc = new Enumerator(folder.subfolders);
 allfiles="";
 sForm.options.length = 0; 
 for(;!fc.atEnd();fc.moveNext()){
  doc=fc.item()
  myOption = document.createElement('Option');
  myOption.text = doc;
  myOption.value = doc;
  sForm.add(myOption);
 }
}
 
</script>
</head>
<body onLoad="ListOfFilesInAFolder('C:\\');">
<form name="frm1">
<select name="mySelect" size="15"></select>
<p><input type="button" value="show selected.." onClick="ListOfFilesInAFolder(this.form.mySelect.value);"></p>
</form>
</body>
</HTML>

Open in new window

0
 
LVL 75

Expert Comment

by:Michel Plungjan
ID: 20374064
And the reason for the error is that if you document.write after the page has rendered (e.g. not inline) the page and the scripts on the page are wiped!
0
 

Author Closing Comment

by:tigger40ks
ID: 31411587
Thank you. Now all I need to do is add coding to decide if I select a file or folder. I have learned more on dynamic scripting.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Browsers only know CSS so your awesome SASS code needs to be translated into normal CSS. Here I'll try to explain what you should aim for in order to take full advantage of SASS.
SASS allows you to treat your CSS code in a more OOP way. Let's have a look on how you can structure your code in order for it to be easily maintained and reused.
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Viewers will learn about basic arrays, how to declare them, and how to use them. Introduction and definition: Declare an array and cover the syntax of declaring them: Initialize every index in the created array: Example/Features of a basic arr…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question