Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
22:34, 27 июня 2012

JavaScript и jQuery заметки

JavaScript мелочи для себя

# значение выделенного пункта select

  1. t = document.getElementById('...'); // вместо '...' подставить id select'a
  2. alert(t.options[t.selectedIndex].text);
 

# адрес страницы

alert(location.href);

Удобно использовать для подстановки адреса, например, в формах и для POST/GET запросов, чтобы не заморачиваться с адресом строки, если данные отправляются на неё же.

 

# передать в php данные и вернуть массив в jQuery с помощью JSON

jQyery код
  1. $.getJSON("index.php?mod=creator", // куда передаём
  2. { show: t }, // какие параметры передаём
  3. function(json) {
  4. alert(json); // ответ. данные идут через запятую
  5. });
PHP код
  1. // $row - массив, ответ на запрос
  2. echo json_encode($row);
 

# глюк parseInt

Представим что надо перевести значение месяца в число. Август - 08. parseInt('08') выдаст 0!!! Т.к. из-за первого 0 он считает число восьмеричным.

Чтобы этого не было надо указывать систему счисления.

Правильно обрабатывать надо так: parseInt('08', 10);

 

# замена по всему тексту

жирным выделено что и на что меняется. ключ g показывает что заменяется не один раз, а по всему тексту. есть два варианта.

text_r = text_r.replace(new RegExp(massiv1[key],'g'),massiv2[key]);

или

text_r = text_r.replace(/{fopl_r}/g,(json[6]==1?'1':'2'));

 

# задержка выполнения jQuery запроса

Если запрос не успевает сработать и вернуть результат, то пользуемся асинхронной отправкой. Это блокирует браузер на время выполнения запроса.

задержка jQuery для обработки результата запроса
  1. $.ajax({
  2. type: "POST",
  3. url: "твой_урл",
  4. data: "spec=1", // какие-то данные отправляем
  5. async: false, // вот наша красота. делаем запрос синхронным
  6. success: function(da){
  7. // что-то делаем с полученным ответом da
  8. })
 

# автоматический редирект, переход на другую страницу

автоматический редирект, переход на другую страницу
  1. var a=10; // количество секунд отсчета
  2. function GoNah(){
  3. document.getElementById('sec').innerHTML = a--; //выводим на панель счетчика с id=sec
  4. if (a > 0) setTimeout( 'GoNah()', 1000 ); // через секунду по новой
  5. else location="localhost"; // сюда подставляем нужный урл
  6. }
  7. setTimeout( 'GoNah()', 1000 ); // выполняем функцию через секунду после открытия страницы
 

# получить значения radiobutton

  1. galka = $('input[name=theme'+theme+']:checked').val();
  2. // или если конкретно радиобаттон
  3. galka = $('input[name=vybor]:radio[checked]').val();
 

# форматирование даты в 'yyyy-mm-dd'

Делаем по-простому:

  1. var now = new Date();
  2. var Year = now.getFullYear();
  3. var Month = now.getMonth() + 1; // месяцы считает с 0, потому прибавим
  4. if (Month < 10) Month = '0' + Month;
  5. var Day = now.getDate();
  6. if (Day < 10) Day = '0' + Day;
  7. var today = Year + '-' + Month + '-' + Day;

вот и всё )

 

# проверка на число

Глюк в том что isNaN хавает и строки. Лечится так.

  1. current_val = parseInt('какой-то_параметр', 10);
  2. if (current_val != current_val) {
  3. alert("материмся");
  4. return;
  5. };

"NaN не равно самому себе, таким образом сравнение n != n будет истинным только в случае когда n равно NaN".

 

# подключение jQuery библиотеки из запасного места, на случай если с первого не подключилось


  1. <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
  2. <script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.6.3.min.js"><\/script>');</script>

красивое решение :)

# заготовка для ajax запросов для простого javascript


  1. var xmlhttp = false;
  2. try { xmlhttp = new ActiveXalbumsect("Msxml2.XMLHTTP"); }
  3. catch(E) {
  4. try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
  5. catch(E) { xmlhttp = false; }
  6. }
  7.  
  8. if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
  9. xmlhttp = new XMLHttpRequest();
  10. }
  11.  
  12. function makeQuery(serverPage, objectName) {
  13. xmlhttp.open("GET", serverPage, true);
  14. xmlhttp.onreadystatechange = function() {
  15. if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  16. var txt = xmlhttp.responseText;
  17. document.getElementById(objectName).innerHTML = txt;
  18. }
  19. }
  20. xmlhttp.send(null);
  21. }

Пример вызова:


  1. function PrDis() {
  2. var sem = document.getElementById('sem').value;
  3. var sot = document.getElementById('sot').value;
  4. var serverPage = "index.php?mod=zhurnal&prd=1&sem="+sem+"&sot="+sot;
  5.  
  6. makeQuery(serverPage, 'kuda_div');
  7. }
   
0
486
0