Javascript.RU

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

свойство innerHTML и Построчное считывание с файла
Помогите пожалуйста разобраться с кодом думаю что должно все работать но нет ничего не получается требуется вывести из файла построчно строки соответствующие критерию поиска вот код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
</head>
 
<script type="text/javascript"> 
 
function inner() {
 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var file = FSO.OpenTextFile("c:\\filesave.txt", 1, true);
    var poisk = document.getElementById("folk");
    var spisok = document.getElementById("tab_find");
    myArray= new Array();
    var i=0;
 
    spisok.innerHTML += "<table>";
    while (!file.AtEndOfStream)
    {
         myArray[i] = file.ReadLine();
         if(poisk.value.test(myArray[i])==true)
              spisok.innerHTML += "<tr><td>" + myArray[i] + "<\/td><\/tr>";
 
         i=i+1;
      }
    spisok.innerHTML += "<\/table>";
 
}
 
</script>
 
<style type="text/css">
 
</style>
 
<body>
 
<form name="mainform">
 
<div id="number">
    <p>№ Трубы</p>
    <input type="text" name="folk">
    <input type="button" name="button" value="Добавить данные"  onClick="inner()">
</div>
 
<div id="tab_find">
</div>
Ответить с цитированием
  #2 (permalink)  
Старый 14.08.2008, 18:17
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

попробуй так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
<style type="text/css">
</style>
</head> 
<body>
<form name="mainform">
 
<div id="number">
    <p>№ Трубы</p>
    <input type="text" id="folk">
    <input type="button" name="button" value="Добавить данные"  onClick="inner()">
</div>

<div id="tab_find"></div>

<script type="text/javascript"> 
 
function inner() {
 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var file = FSO.OpenTextFile("c:\\filesave.txt", 1, true);
    var poisk = document.getElementById("folk");
    var spisok = document.getElementById("tab_find");
 
	var reg = new RegExp(poisk.value,'gi');
    spisok.innerHTML += "<table>";
    while (!file.AtEndOfStream) {
		var a = file.ReadLine();
		if(reg.test(a)) spisok.innerHTML += "<tr><td>" + myArray[i] + "<\/td><\/tr>";
      }
    spisok.innerHTML += "<\/table>";
 
}
 
</script>
</form>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 14.08.2008, 20:36
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
попробуй так:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
<style type="text/css">
</style>
</head> 
<body>
<form name="mainform">
 
<div id="number">
    <p>№ Трубы</p>
    <input type="text" id="folk">
    <input type="button" name="button" value="Добавить данные"  onClick="inner()">
</div>

<div id="tab_find"></div>

<script type="text/javascript"> 
 
function inner() {
 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var file = FSO.OpenTextFile("c:\\filesave.txt", 1, true);
    var poisk = document.getElementById("folk");
    var spisok = document.getElementById("tab_find");
 
	var reg = new RegExp(poisk.value,'gi');
    spisok.innerHTML += "<table>";
    while (!file.AtEndOfStream) {
		var a = file.ReadLine();
		if(reg.test(a)) spisok.innerHTML += "<tr><td>" + myArray[i] + "<\/td><\/tr>";
      }
    spisok.innerHTML += "<\/table>";
 
}
 
</script>
</form>
</body>
</html>
Спасибо работает но ; :
1. myArray на a забыл заменить
if(reg.test(a)) spisok.innerHTML += "<tr><td>" + myArray[i] + "<\/td><\/tr>";


2. Есть вопрос почему мой вариант не работает ? где ошибка ...

3. Почему он не в виде таблицы все это выдает теги все пропускает ...

Последний раз редактировалось baal1988, 14.08.2008 в 20:38.
Ответить с цитированием
  #4 (permalink)  
Старый 14.08.2008, 20:48
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

ага, забыл поменять на а

Не работал потому что у тебя не было элемента с id=folk

Ещё poisk.value.test - это не катит, так как poisk.value - это строка, а
тестить надо регулярным выражением.

3. Почему он не в виде таблицы все это выдает теги все пропускает ...
У меня нет файла filesave.txt - посмотреть не на чем (самому писать лень)

И ещё: кучу раз дёргать innerHTML очень плохо, я переделал:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
<style type="text/css">
</style>
</head> 
<body>
<form name="mainform">
 
<div id="number">
    <p>№ Трубы</p>
    <input type="text" id="folk">
    <input type="button" name="button" value="Добавить данные"  onClick="inner()">
</div>
 
<div id="tab_find"></div>
 
<script type="text/javascript"> 
 
function inner() {
 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var file = FSO.OpenTextFile("c:\\filesave.txt", 1, true);
    var poisk = document.getElementById("folk");
    var spisok = document.getElementById("tab_find");
 
    var reg = new RegExp(poisk.value,'gi');
    var str  = "<table>";
    while (!file.AtEndOfStream) {
        var a = file.ReadLine();
        if(reg.test(a)) str += "<tr><td>" + a + "</td></tr>";
      }
    str += "</table>";

    spisok.innerHTML = str;
}
 
</script>
</form>
</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 14.08.2008, 21:08
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
ага, забыл поменять на а

Не работал потому что у тебя не было элемента с id=folk

Ещё poisk.value.test - это не катит, так как poisk.value - это строка, а
тестить надо регулярным выражением.

3. Почему он не в виде таблицы все это выдает теги все пропускает ...
У меня нет файла filesave.txt - посмотреть не на чем (самому писать лень)

И ещё: кучу раз дёргать innerHTML очень плохо, я переделал:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Сайт</title>
<style type="text/css">
</style>
</head> 
<body>
<form name="mainform">
 
<div id="number">
    <p>№ Трубы</p>
    <input type="text" id="folk">
    <input type="button" name="button" value="Добавить данные"  onClick="inner()">
</div>
 
<div id="tab_find"></div>
 
<script type="text/javascript"> 
 
function inner() {
 
    var FSO = new ActiveXObject("Scripting.FileSystemObject"); 
    var file = FSO.OpenTextFile("c:\\filesave.txt", 1, true);
    var poisk = document.getElementById("folk");
    var spisok = document.getElementById("tab_find");
 
    var reg = new RegExp(poisk.value,'gi');
    var str  = "<table>";
    while (!file.AtEndOfStream) {
        var a = file.ReadLine();
        if(reg.test(a)) str += "<tr><td>" + a + "</td></tr>";
      }
    str += "</table>";

    spisok.innerHTML = str;
}
 
</script>
</form>
</body>
</html>
c 1 и 2 разобрался напутал че т я немного а вот с 3 понять не могу , хотя нет когда ты переделал через строку str все заработало выводит как нужно ввиде таблички а почему так ? и почему нельзя часто использовать свойство innerHTML ?
Ответить с цитированием
  #6 (permalink)  
Старый 14.08.2008, 21:51
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

потому что при изменении innerHTML браузер перерисовывает страницу, а это КАТАСТРОФИЧЕСКИ медленно.

Почему заработало со строкой: теперь таблица полностью собрана в строке и одним махом записана в иннерХТМЛ, а до этого писались куски, тэг таблицы н был закрыт и браузер не мог понять, что в конце концов всё будет хорошо
Ответить с цитированием
  #7 (permalink)  
Старый 14.08.2008, 21:56
Интересующийся
Отправить личное сообщение для baal1988 Посмотреть профиль Найти все сообщения от baal1988
 
Регистрация: 14.08.2008
Сообщений: 28

Сообщение от ZoNT Посмотреть сообщение
потому что при изменении innerHTML браузер перерисовывает страницу, а это КАТАСТРОФИЧЕСКИ медленно.

Почему заработало со строкой: теперь таблица полностью собрана в строке и одним махом записана в иннерХТМЛ, а до этого писались куски, тэг таблицы н был закрыт и браузер не мог понять, что в конце концов всё будет хорошо
Ясно ) спасибо за помощь будем учиться )
Ответить с цитированием
  #8 (permalink)  
Старый 14.08.2008, 21:57
Флудер
Отправить личное сообщение для ZoNT Посмотреть профиль Найти все сообщения от ZoNT
 
Регистрация: 25.07.2008
Сообщений: 1,271

не за что...
Ответить с цитированием
Ответ



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

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