Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.11.2014, 13:32
Новичок на форуме
Отправить личное сообщение для Alex12320 Посмотреть профиль Найти все сообщения от Alex12320
 
Регистрация: 03.11.2014
Сообщений: 3

Формирование 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(), то все работает. Помогите, пожалуйста найти ошибку

Последний раз редактировалось Alex12320, 03.11.2014 в 13:44.
Ответить с цитированием
  #2 (permalink)  
Старый 03.11.2014, 13:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,134

Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
Ответить с цитированием
  #3 (permalink)  
Старый 03.11.2014, 13:40
Новичок на форуме
Отправить личное сообщение для Alex12320 Посмотреть профиль Найти все сообщения от Alex12320
 
Регистрация: 03.11.2014
Сообщений: 3

Сделал
Ответить с цитированием
  #4 (permalink)  
Старый 03.11.2014, 14:30
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

new ActiveXObject

В браузерах этот код работать не сможет
Актив Х работает только IE и то только древних 8-
Ответить с цитированием
  #5 (permalink)  
Старый 03.11.2014, 14:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Это WScript. Запускайте его как программу, двойным щелчком из папки в Винде.

ЗЫ, а, точно, там теги. Короче, все что внутри тега скрипт вырезайте, записывайте в текстовый файл, скажем gen_html.js и запускайте его как екзешник. Если же в хтмле какой-то интерфейс - то ищите браузер который понимает Windows Script, или прописывайте параметры прямо в скрипте.

Это ж позорнота - за годы Микрософт не удосужился обеспечить свой хотя бы самый примитивный интерфейс. В ФШ и то можно прямо в js обрисовать окно, элементы, и работать как с программой.

Последний раз редактировалось kostyanet, 03.11.2014 в 14:38.
Ответить с цитированием
  #6 (permalink)  
Старый 03.11.2014, 14:42
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Блин, рассмотрел скрипт - так он просто файлы в теги пихайет? Одуреть.

Скопируйте файлы в... а, у вас какая винда? Так вот в 7 и выше можно копировать имена файлов и вставлять как текст, а для ранешних есть апп - полтора мега - Send To Toys. Копируете файлы и в шаблон екзеля вставляйте. Формула =СЦЕПИТЬ() сцепит теги с текстом - скопируете еще раз и готово.
Ответить с цитированием
  #7 (permalink)  
Старый 03.11.2014, 14:47
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Собственно это весь интерфейс:

Сообщение от Alex12320
var n = window.prompt("Введите путь к корневому файлу", "");
Замените на функцию нормального выбора папки:

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];
}
Ответить с цитированием
  #8 (permalink)  
Старый 03.11.2014, 16:01
Новичок на форуме
Отправить личное сообщение для Alex12320 Посмотреть профиль Найти все сообщения от Alex12320
 
Регистрация: 03.11.2014
Сообщений: 3

сделал как вы сказали, нашел опечатку. но все равно ничего не происходит. можно ли отладить код по шагам?
function browseForFolder(start)
? start означает что скрипт исполняется с этой функции? и разве нельзя просто в тексте прописывать пути к файлам? и я не совсем понял как их через ексель вставлять?
Ответить с цитированием
  #9 (permalink)  
Старый 04.11.2014, 09:42
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Применение

var f = browseForFolder(""); // юзер выбрал папку

if(f!=null && f.length>0) {
 // в f[0] == имя папки
 // в f[1] == полный путь к этой папке
}
Ответить с цитированием
  #10 (permalink)  
Старый 04.11.2014, 09:48
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Должно работать

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();
}
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь по Facebook. Кто умeeт хoть немного кодить? HTML, CSS, Javascript msk1 (X)HTML/CSS 5 21.02.2013 17:38
Веб-разработчик (HTML + JavaScript), до 75000, Москва, м. Бауманская SolverMate Работа 0 25.01.2011 16:48
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 17:12
Скроллирование окна браузера с помощью JavaScript. lancer Элементы интерфейса 1 19.02.2008 23:16