Формирование html с помощью javascript
Доброго времени суток!
Помогите пожалуйста начинающему программисту. нужно написать скрипт который формировал бы небольшую html страницу. написал код, но он не работает, не может найти не одной функции. полный текст следующий: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <script type="text/javascript"> <!-- function GetWayToFile() { var n = window.prompt("Введите путь к корневому файлу", ""); return n; } function GetHeader() { var page = '<html>\n<header>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n</header>\n'; } function GetFiles() { var folderspec = "c:\\"; var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.GetFolder(folderspec); var fc = new Enumerator(f.Files); var s = new array(100); var num = 0; for (; !fc.atEnd(); fc.moveNext()) { s[num] += fc.item(); num+=1; }; return s; } function MakeText(){ var PageText = ''; PageText+= GetHeader(); var BodyTextStart = '<body>\n'; var BodyDivText = ''; var ImgArr = GetFiles(); var BodyTextFinal = '</body>\n</html>'; var count = 0; while (ImgArr[count]<>'') { BodyDivText = BodyDivText +'<div class = "photo"><img class = "img" src = "' + ImgArr[count]+ '" ></div>\n'; count++; } PageText=BodyTextStart+BodyDivText+BodyTextFinal; WriteToFile(PageText); return 0; } function WriteToFile(text) { var fso = new ActiveXObject('Scripting.FileSystemObject'); var s = fso.CreateTextFile("C:\\NewFile.html", true); s.WriteLine(text); s.WriteLine('***********************'); s.Close(); } //--> </script> </head> <body> <a href="#" onclick='GetWayToFile();'>Указать папку</a> <a href="#" onclick='MakeText();'>Сформировать файлы</a> </body> </html> Если убрать функцию MakeText(), то все работает. Помогите, пожалуйста найти ошибку |
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: [js] ... ваш код... [/js] О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting. |
Сделал
|
new ActiveXObject
В браузерах этот код работать не сможет Актив Х работает только IE и то только древних 8- |
Это WScript. Запускайте его как программу, двойным щелчком из папки в Винде.
ЗЫ, а, точно, там теги. Короче, все что внутри тега скрипт вырезайте, записывайте в текстовый файл, скажем gen_html.js и запускайте его как екзешник. Если же в хтмле какой-то интерфейс - то ищите браузер который понимает Windows Script, или прописывайте параметры прямо в скрипте. Это ж позорнота - за годы Микрософт не удосужился обеспечить свой хотя бы самый примитивный интерфейс. В ФШ и то можно прямо в js обрисовать окно, элементы, и работать как с программой. |
Блин, рассмотрел скрипт - так он просто файлы в теги пихайет? Одуреть.
Скопируйте файлы в... а, у вас какая винда? Так вот в 7 и выше можно копировать имена файлов и вставлять как текст, а для ранешних есть апп - полтора мега - Send To Toys. Копируете файлы и в шаблон екзеля вставляйте. Формула =СЦЕПИТЬ() сцепит теги с текстом - скопируете еще раз и готово. |
Собственно это весь интерфейс:
Цитата:
function browseForFolder(start) { var BIF_returnonlyfsdirs = 0x0001; var BIF_dontgobelowdomain = 0x0002; var BIF_statustext = 0x0004; var BIF_returnfsancestors = 0x0008; var BIF_editbox = 0x0010; var BIF_validate = 0x0020; var BIF_browseforcomputer = 0x1000; var BIF_browseforprinter = 0x2000; var BIF_browseincludefiles = 0x4000; var oShell = new ActiveXObject("shell.application"); var ssfWINDOWS = 36; var oFolder = oShell.BrowseForFolder(0, "Example", BIF_returnonlyfsdirs || BIF_browseincludefiles , 17); if(!oFolder) return null; var oItem = oFolder.parentFolder.parseName(oFolder.title); if(!oItem) return null; return [oFolder.title, oItem.Path]; } |
сделал как вы сказали, нашел опечатку. но все равно ничего не происходит. можно ли отладить код по шагам?
function browseForFolder(start)? start означает что скрипт исполняется с этой функции? и разве нельзя просто в тексте прописывать пути к файлам? и я не совсем понял как их через ексель вставлять? |
Применение
var f = browseForFolder(""); // юзер выбрал папку if(f!=null && f.length>0) { // в f[0] == имя папки // в f[1] == полный путь к этой папке } |
Должно работать
var f=GetWayToFile(); if(f) MakeText(f); function GetWayToFile() { var f = browseForFolder(""); if(f!=null && f.length>0) return f[1]; else return null; } function GetHeader() { var page = '<html>\n<header>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n</header>\n'; } function GetFiles(folderspec ) { var fso = new ActiveXObject("Scripting.FileSystemObject"); var f = fso.GetFolder(folderspec); var fc = new Enumerator(f.Files); var s = new array(100); var num = 0; for (; !fc.atEnd(); fc.moveNext()) { s[num] += fc.item(); num+=1; }; return s; } function MakeText(f){ var PageText = ''; PageText+= GetHeader(); var BodyTextStart = '<body>\n'; var BodyDivText = ''; var ImgArr = GetFiles(f); var BodyTextFinal = '</body>\n</html>'; var count = 0; while (ImgArr[count]<>'') { BodyDivText = BodyDivText +'<div class = "photo"><img class = "img" src = "' + ImgArr[count]+ '" ></div>\n'; count++; } PageText=BodyTextStart+BodyDivText+BodyTextFinal; WriteToFile(PageText); return 0; } function WriteToFile(text) { var fso = new ActiveXObject('Scripting.FileSystemObject'); var s = fso.CreateTextFile("C:\\NewFile.html", true); s.WriteLine(text); s.WriteLine('***********************'); s.Close(); } |
Часовой пояс GMT +3, время: 19:22. |