<!-- Элемент, перед которым необходимо добавить произвольный html-код -->
<div id="target">Target</div>
// новый html-контент
var newHtml = '<div><span>Span 1.1</span><span>Span 1.2</span></div><div><span>Span 2.1</span><span>Span 2.2</span></div>';
// вставляем перед целевым элементом
document.getElementById('target').insertAdjacentHTML('beforeBegin', newHtml);
Пример в песочнице - jsfiddle.net/krfwuksy 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
var cloneOfA = JSON.parse(JSON.stringify(a));
var copiedObject = jQuery.extend(true, {}, originalObject);
var links = document.getElementsByClassName('link-span');
while(links.length) {
links[0].outerHTML = '<a target="_blank" href="#">New элемент</a>';
}
i+1
не делает с переменной ровным счетом ничего - i
как была 0, так и останется 0. var socket = io(); // не стоит ждать загрузки всего документа, сокет должен успеть "открыться" к событию "document ready"
socket.on('joined',function(){
window.location.replace("/room");
});
socket.on('connect', function () { // Вот теперь emit будет работать сразу
$( document ).ready(function() {
$('#create').click(function(){
socket.emit('Create room',(socket.id).toString());
});
$('#join').click(function(){
socket.emit('join',$('#roomID').val());
});
});
});
[$name,$email].map(function(item) {
item.hide();
})
str = "matrix(1,0,0,1,0,0)";
newStr = str.replace(/-?\d+\)/, '80)');
Основное отличие между ними: функции, объявленные как Function Declaration, создаются интерпретатором до выполнения кода, поэтому их можно вызвать до объявления, например:
// Function Declaration
sum(1,2) //3
function sum(a, b) {
return a + b;
}
// Function Expression
summer(1,2) //Ошибка, summer не определена
var summer = function(a, b) {
return a + b;
}
var
abs = "Я переменная",
func = (function(abs){
return new Function("", "return abs;");
})("Я аргумент")
;
//Вызовем созданную функцию
alert(func()); //"Я переменная"