JavaScript мелочи для себя
# значение выделенного пункта select
-
t = document.getElementById('...'); // вместо '...' подставить id select'a
-
alert(t.options[t.selectedIndex].text);
# адрес страницы
alert(location.href);
Удобно использовать для подстановки адреса, например, в формах и для POST/GET запросов, чтобы не заморачиваться с адресом строки, если данные отправляются на неё же.
# передать в php данные и вернуть массив в jQuery с помощью JSON
-
$.getJSON("index.php?mod=creator", // куда передаём
-
{ show: t }, // какие параметры передаём
-
function(json) {
-
alert(json); // ответ. данные идут через запятую
-
});
-
// $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 запроса
Если запрос не успевает сработать и вернуть результат, то пользуемся асинхронной отправкой. Это блокирует браузер на время выполнения запроса.
-
$.ajax({
-
type: "POST",
-
url: "твой_урл",
-
data: "spec=1", // какие-то данные отправляем
-
async: false, // вот наша красота. делаем запрос синхронным
-
success: function(da){
-
// что-то делаем с полученным ответом da
-
})
# автоматический редирект, переход на другую страницу
-
var a=10; // количество секунд отсчета
-
function GoNah(){
-
document.getElementById('sec').innerHTML = a--; //выводим на панель счетчика с id=sec
-
if (a > 0) setTimeout( 'GoNah()', 1000 ); // через секунду по новой
-
else location="localhost"; // сюда подставляем нужный урл
-
}
-
setTimeout( 'GoNah()', 1000 ); // выполняем функцию через секунду после открытия страницы
# получить значения radiobutton
-
galka = $('input[name=theme'+theme+']:checked').val();
-
// или если конкретно радиобаттон
-
galka = $('input[name=vybor]:radio[checked]').val();
# форматирование даты в 'yyyy-mm-dd'
Делаем по-простому:
-
var now = new Date();
-
var Year = now.getFullYear();
-
var Month = now.getMonth() + 1; // месяцы считает с 0, потому прибавим
-
if (Month < 10) Month = '0' + Month;
-
var Day = now.getDate();
-
if (Day < 10) Day = '0' + Day;
-
var today = Year + '-' + Month + '-' + Day;
вот и всё )
# проверка на число
Глюк в том что isNaN хавает и строки. Лечится так.
-
current_val = parseInt('какой-то_параметр', 10);
-
if (current_val != current_val) {
-
alert("материмся");
-
return;
-
};
"NaN не равно самому себе, таким образом сравнение n != n будет истинным только в случае когда n равно NaN".
# подключение jQuery библиотеки из запасного места, на случай если с первого не подключилось
-
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
-
<script>!window.jQuery && document.write('<script src="http://code.jquery.com/jquery-1.6.3.min.js"><\/script>');</script>
красивое решение :)
# заготовка для ajax запросов для простого javascript
-
var xmlhttp = false;
-
try { xmlhttp = new ActiveXalbumsect("Msxml2.XMLHTTP"); }
-
catch(E) {
-
try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
-
catch(E) { xmlhttp = false; }
-
}
-
-
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
-
xmlhttp = new XMLHttpRequest();
-
}
-
-
function makeQuery(serverPage, objectName) {
-
xmlhttp.open("GET", serverPage, true);
-
xmlhttp.onreadystatechange = function() {
-
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
-
var txt = xmlhttp.responseText;
-
document.getElementById(objectName).innerHTML = txt;
-
}
-
}
-
xmlhttp.send(null);
-
}
Пример вызова:
-
function PrDis() {
-
var sem = document.getElementById('sem').value;
-
var sot = document.getElementById('sot').value;
-
var serverPage = "index.php?mod=zhurnal&prd=1&sem="+sem+"&sot="+sot;
-
-
makeQuery(serverPage, 'kuda_div');
-
}