Jump to content
  • 0

Как выполнять Javscript единожды


rome.ro
 Share

Question

Добрый день, товарищи!

Проблема у меня в следующем. Она может показаться кому-то достаточно "чайниковой", но, что-же - так оно, видимо, и есть :-)

Итак, есть у меня страничка в которую, при нажатии по ссылке(выполнятется функция), динамически подгружается содержимое из другого файла через Javascript(короче говоря, AJAX).

Дело в том, что каждый раз при нажатии по ссылке(выполнении функции) содержимое из другого файла подгружается вновь - т.е., если я нажму по ссылке несколько раз, то содержимое несколько раз вставится в страницу и будет отображаться - а мне нужно только один раз т.е. - один раз кликнул по ссылке(исполнил функцию) - содержимое вставилось, а при следующем нажатии не происходило ничего.

Как это сделать?

Спасибо. Надеюсь, обьяснил более-менее доходчиво. Хотя сам знаю, что с исходником было бы проще, но дать его не получится - он достаточно сложный и состоит из нескольких файлов - поэтому толкую "на пальцах".

Link to comment
Share on other sites

18 answers to this question

Recommended Posts

  • 0

Да, и мне это первое в голову пришло. Наверное самое легкое - использовать некий флаг. Инициализировать как false. При вызове функции: проверить флаг, если значение флага false, то загружаем контент и установить значение флага как true; если true не загружаем.

Link to comment
Share on other sites

  • 0
Да, и мне это первое в голову пришло. Наверное самое легкое - использовать некий флаг. Инициализировать как false. При вызове функции: проверить флаг, если значение флага false, то загружаем контент и установить значение флага как true; если true не загружаем.

Да - я тоже думал, что можно какую-нить переменную ввести для этого. Просто подумал, что у кого-то уже есть готовая идея.

Link to comment
Share on other sites

  • 0
Это не шутка. Это единственно верный выход.

Это так кажется. На самом деле правильно не отмечать попытку сделать действие, а проверять получен ли до этого результат. Т.е. смотреть, есть ли данные там, куда мы собрались их ложить.

Link to comment
Share on other sites

  • 0
Это так кажется. На самом деле правильно не отмечать попытку сделать действие, а проверять получен ли до этого результат. Т.е. смотреть, есть ли данные там, куда мы собрались их ложить.

Вот-вот - именно это я и пытался изобрести. Если придумаю сегодня - выложу рецептик.

Link to comment
Share on other sites

  • 0

Итак, благодаря уважаемому комраду e1f, был найдет способ выполнения любой функции вставки содержимого в документ единожды. Для тех кому интересно - привожу рецепт:

function Some_Function()	   // объявление како-либо функции вставки;
{
if(document.getElementById("идентификатор_элемента").innerHTML=="")
{
//какие-то действия;
};

};

Пояснения:

1) Первой строчкой мы объявляем саму функцию.

2) Самым первым делом мы проверяем условие - "Если наш элемент(в который мы помещаем результат выполнения функции) не содержит никакого HTML-кода(т.е. - функция не выполнялась еще ни разу), то функцию следует выполнить; иначе - ничего не делаем."

Вот такой простой рецепт.

Спасибо всем кто принимал участие.

Edited by rome.ro
Link to comment
Share on other sites

  • 0

И все-таки это не совсем

способ выполнения любой функции вставки содержимого в документ единожды

Строго единожды будет при удалении обработчика события после выполнения функции.

Link to comment
Share on other sites

  • 0
if (document.getElementById('your_id').innerHTML == '') { load_content(); }

:P:):P ну вы ребята и даете!!

к примеру функция load_content возвращает полученые данные. и вы их просто..

thisText = load_content();
document.getElementById('id').innerHTML = thisText;

в конец она будет добовлятеся только если вы сделаете так:

thisText = load_content();
document.getElementById('id').innerHTML+=thisText;

видите плюсик? ну вот.. лично я обычно изпользую jquery:

$('#id').load('index.html');

и не каких проблем!

Edited by Pavel_html
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy