Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Загрузка с файла


Автор: vio 26.7.2005, 12:36
Можно ли такое реализовать при помощи JavaScript?
Есть, к примеру, файл txt и в нем Х строк.
Мне нужно что бы при загрузке страницы вставлялась в ячейку случайная строка.

Автор: Sardar 26.7.2005, 19:50
Можно. Для этого поднимаем XMLHttpRequest(набери слово в поиске), загрузили текстовый файл, разбили responseText регами на строки, посчитали.

Автор: vio 27.7.2005, 10:39
Это уж больно сложно, мне нужно то, что бы при загрузке страницы менялась одна строка,
может я не правильно понимаю как ее реализовывать. Может проще через массив?

Автор: Sardar 27.7.2005, 14:08
Естественно проще написать .js файл, в нём определить массив строк smile

Ещё лучше если ты на сервере будешь выбирать строку и отдавать клиенту, а не тащить весь массив за собой, трафа меньше.

Автор: vio 28.7.2005, 09:39
smile массива!

Автор: Sardar 28.7.2005, 13:55
Элементарно smile

Код
//это содержимое файла data.js
var data=[
 "строка 1",
 "строка 2",
 "помимо строк здесь что угодно лежать может"
];


Затем на основной странице пишем:
Код
<script type="text/javascript" src="./data.js"></script>
<scipt type="text/javascript">
if(typeof(data)!="undefined") {
  alert(data[Math.round(data.length*Math.random())]); //выберем случайную строку
}</script>


Сам массив с данными может генериться на сервере скриптами. Сам элемент <script> можно создавать динамически. Отсюда прийдём к не плохому методу динамической подзагрузки данных smile

Автор: vio 29.7.2005, 08:57
СПАСИБО! Очень помогло, а главное то, что нужно! smile

Автор: vio 5.8.2005, 08:38
Sardar
Потребовалось что бы было не просто строка: "строка1", а еще должны быть символы разрыв строки, типа "/n". Как сделать?

Автор: Sardar 5.8.2005, 17:08
Экранируем символы, обычные \n - перевод строки, \r возврат каретки, \uHHHH - юникод и т.д.
Это обычные строки JS smile

Автор: vio 8.8.2005, 11:03
Так?
Код

var data=[
 "строка 1"+"\n"+"строка1-1",
 "строка 2"+"\n"+"строка2-1",
 "помимо строк здесь что угодно лежать может"+"\n"+"ffffff"+"\n"
];

только у меня вместо переноса строки почему-то пробелы появляются.

Автор: Sardar 8.8.2005, 18:23
Плюсы убери, пиши цельной строкой: "Строка 1\nСтрока2";
Цитата(vio @ 8.8.2005, 10:03)
олько у меня вместо переноса строки почему-то пробелы появляются.

Угу, ведь не известно что ты потом дальше с этими строками делаешь smile
Если показать в alert'е, то всё должно работать. Если же вставить в HTML, то согласно спеcификации HTML(4.0) перевод строки делаеться тегом <br>. Исключение для тегов со стилем white-space: pre, например <pre> тег.

Автор: vio 9.8.2005, 08:53
Вот содержимое файла data.js
Код

var data=[
 "строка 1\nстрока1-1",
 "строка 2\nстрока2-1",
 "помимо строк здесь что угодно лежать может\nffffff"
];

А это я вставляю в HTML в тело документа:
Код

<script type="text/javascript" src="./data.js"></script>
    <script type="text/javascript">
    if(typeof(data)!="undefined") {
      document.write(data[Math.round(data.length*Math.random())]); 
    }</script>


Где может быть что-то не так?

Автор: Sardar 9.8.2005, 15:00
Повторяю: перевод строки в JS это символ \n, в то же время это просто пробельный символ в HTML. На то две разные спецификации smile
Если знаком с HTML, то ты знаешь тег для "перевода строки", вот его на место \n и поставь. Если тега не знаешь, то перечитай мой предидущий пост.

Автор: vio 10.8.2005, 08:17
Поняла:
Код

var data=[
 "строка 1<br>строка1-1",
 "строка 2<br>строка2-1",
 "помимо строк здесь что угодно лежать может<br>ffffff"
];


Добавлено @ 08:20
Только у меня почему-то иногда появляется "undefined". Это отчего может быть?

Автор: Sardar 10.8.2005, 16:13
Цитата(vio @ 10.8.2005, 07:17)
Только у меня почему-то иногда появляется "undefined". Это отчего может быть?

Ошибка в твоём коде. Выкладывай, поишем. Но лучше открой новую тему в разделе для новичков, а то чую придёться резать эту smile

Автор: vio 11.8.2005, 12:12
В моем коде???
Я только чуть-чуть изменила твой.

Код

<script type="text/javascript" src="./data.js"></script>
    <script type="text/javascript">
    if(typeof(data)!="undefined") {
      document.write(data[Math.round(data.length*Math.random())]); //выберем случайную строку
    }</script>

и
Код

var data=[
 "строка 1<br>строка1-1",
 "строка 2<br>строка2-1",
 "помимо строк здесь что угодно лежать может<br>ffffff"
];


Автор: Sardar 11.8.2005, 14:41
Извиняюсь, я ошибся smile
Замени: Math.round на Math.floor

Автор: vio 12.8.2005, 11:29
smile
Работает!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)