var $area = $("#textarea"), $feed = $("#textareaFeedback");
$('#textarea').on("input", function(){
var val = this.value, selStart = this.selectionStart;
val.length > maxLength && $area
.val( val.substr(0, maxLength) )
.prop({
selectionStart : selStart,
selectionEnd : selStart
})
;
var remaning = Math.max(maxLength - val.length, 0);
$feed.html(' - осталось ( ' + remaning + ' ) символов ')
.toggleClass('warning', remaning < 15);
});
Object.clone = function clone(o, copyProto, copyNested){
function Create(i){
for(i in o){
if(o.hasOwnProperty(i)) this[i] = ( copyNested && typeof o[i] == "object" )
? clone(o[i], true, true) : o[i];
}
}
if(copyProto && "__proto__" in o) Create.prototype = o.__proto__; //IE затупит
return new Create();
}
//o - Целевой объект
//copyProto - будет ли скопирован прототип объекта
//copyNested - будут ли клонированы объекты, вложенные в текущий или сохранятся в виде ссылок
var target = {
"A" : {
"Z" : 1,
"X" : 2,
"Y" : {
"F" : 3,
"G" : 4
}
}
};
target.__proto__.f = function(){};
var clone1 = Object.clone(target, false, true);
clone1.f //undefined
clone1.A == target.A //false
var clone2 = Object.clone(target, true);
clone2.f //function
clone2.A == target.A //true
-ab-cd
= AbCd
, то есть, отбрасывать тире, а букву, следующую за ним, возводить в верхний регистр.border-width
- borderWidth
, -moz-transform
- MozTransform
,data-tag-for-title
- dataset.tagForTitle
. var links = document.getElementsByClassName('link-span');
while(links.length) {
links[0].outerHTML = '<a target="_blank" href="#">New элемент</a>';
}
i+1
не делает с переменной ровным счетом ничего - i
как была 0, так и останется 0. /* box = getElementsByClassName("box"); */
while(box.length) {
box[0].replaceWith(a.cloneNode());
}
/*
Или можно сделать так:
box = document.querySelectorAll(".box");
*/
for(var i = 0; i < box.length; i++) {
box[i].replaceWith(a.cloneNode());
}
Element.prototype.replaceWith = function(e){
this.parentNode.insertBefore(e, this);
this.remove();
}
var conditions = {
firstCame : !( localStorage.getItem('firstCame') || localStorage.setItem("firstCame", true) );
timeGap : Date.now() + 3e5; //3e5 = 300000 = 1000 * 60 * 5, т.е 5 минут
}
......
if(conditions.firstCame && Date.now() >= conditions.timeGap){
//Что-то делаем
}
......
var timeGap = false;
setTimeout(function(){ timeGap = true; }, 3e5);
......
if(timeGap){ ... }
......
{
distance : wH / 3 //Высота окна, деленная 3
}
<script>
var dataObj = {
subCat : "#<?=$subCatId?>",
mainCat : "#<?=$mainCatId?>"
}
</script>
<script src="file.js"></script>
jQuery(function() {
var $sC = jQuery(dataObj.subCat).hide();
jQuery(dataObj.mainCat).hover(
function(){
$sC.show(300);
},
function(){
$sC.hide();
}
);
});
дальше идёт поиск по массиву на соответствие элемента.
var
colorsShow = ["Red", "Orange", "Yellow", "Green", "Blue", "Indigo", "Violet"],
userColor = "red"
;
colorsShow.some(function(color){
return color.toLowerCase() == userColor.toLowerCase();
}); //true - если совпадение есть
button.onclick = function(){
delete button.onclick;
var xhr = new XMLHttpRequest();
....
xhr.onload = function(){
//Что-то делаем
button.onclick = function(){
//Выпадание меню
}
}
}
button.addEventListener("click", function one(){
button.removeEventListener("click", one);
var xhr = new XMLHttpRequest();
....
xhr.onload = function(){
//Что-то делаем
button.addEventListener("click", function(){
//Выпадание меню
});
}
});
$(button).one("click", function(){
$.ajax(...).done(function(){
//Что-то делаем
$(button).click(function(){
//Выпадание меню
});
});
});