param1
и param2
. Поэтому при их изменении ничего не меняется.var app = new Vue({
el: '#app1',
data: {
param1: 3100,
param2: 200,
},
computed: {
resultAll: function() {
var p1 = this.param1
,p2 = this.param2
;
return {
one: p1 * 2,
two: p2 * 3,
three: p1 + p2
};
}
}
});
characterData: true
).function Equipment() {
var Bag = [];
this.addTool = function(tool) {
Bag.push(tool);
console.log("Added. Bag:", Bag);
}
}
function Tools() {
this.item1 = {
name: "item1",
price: 5,
count: 10
};
this.item2 = {
name: "item2",
price: 15,
count: 20
};
this.item3 = {
name: "item3",
price: 20,
count: 30
};
this.item4 = {
name: "item4",
price: 30,
count: 40
};
this.item5 = {
name: "item5",
price: 40,
count: 50
};
}
var equipment = new Equipment();
var tools = new Tools();
equipment.addTool(tools.item1); //
;(function(){
var today = new Date().getDate()
, checkInterval = 500 // ms
;
function check() {
if((new Date).getDate() !== today) window.location.reload(true);
else setTimeout( check, checkInterval);
}
check();
})();
var content = document.querySelector(".entry-content");
var button = document.querySelector("#button");
function copyToClipboard(el) {
var range;
if (document.selection) {
range = document.body.createTextRange();
range.moveToElementText(el);
range.select().createTextRange();
} else if (window.getSelection) {
range = document.createRange();
range.selectNode(el);
window.getSelection().addRange(range);
} else return;
document.execCommand("copy");
}
button.addEventListener('click', () => copyToClipboard(content));
.colorAdd()
, чтобы вызывать так, как вы написали. Вместо elem.colorAdd();
colorAdd.apply(elem);
colorAdd()
, назначив её контекстом (значением this
) переданный первым параметром elem
и всё сработает так, как вы задумали. Фиддл. const delay = _ => new Promise(rs => setTimeout(rs, 3e3));
async function notSoFast(promise) {
result = await Promise.all([ promise, delay()]);
return result[0];
}
async function runPromisesInSequence(promises) {
for (let i=0; i<promises.length; i++) {
if(i === 0) {
console.timeEnd( await promises[0]);
} else {
console.timeEnd( await notSoFast(promises[i]));
}
}
}
function makePr(label, dur) {
return new Promise(rs => {
console.log('%s started', label);
console.time(label); // начало отсчёта
setTimeout(_ => {
console.log('%s timer completed', label);
rs(label);
}, dur);
});
}
runPromisesInSequence([
makePr('r1', 1000),
makePr('r2', 5000),
makePr('r3', 0000),
]);
/* Выводит:
r1 started
r2 started
r3 started
r3 timer completed
r1 timer completed
r1: 1005ms
r2 timer completed
r2: 5007ms
r3: 8009ms
*/
function replacer(el){
var i, node, span;
if(el.hasChildNodes()) {
for(i=0; i<el.childNodes.length; i++) {
node = el.childNodes[i];
if(node.nodeType === Node.ELEMENT_NODE) {
if( !!~['SCRIPT','NOSCRIPT'].indexOf(node.nodeName)) continue;
replacer(node);
} else if( node.nodeType === Node.TEXT_NODE) {
if(node.nodeValue.match(/^\s+$/)) continue;
span = document.createElement("span");
span.innerHTML = node.nodeValue.replace(/([а-яА-Я]+)/ug, '<i>$1</i>');
el.insertBefore(span, node);
el.removeChild(node);
}
}
}
}
replacer(document.body);
<span>
, чтобы просто innerHTML ему заменить.const dGet = document.getElementById.bind(document);
const reSpace = /\s+/;
const div = dGet('text');
const text = div.innerText;
const words = text.trim().split(reSpace);
dGet('text_input').addEventListener('input', function(e){
var i, myWords = e.target.value.trim().split(reSpace),
theWords = words.slice();
var toCheck = e.target.value.substr(-1) === ' ';
if(!toCheck) myWords.length--;
for(i=0; i<Math.min(myWords.length, words.length); i++) {
if(words[i] !== myWords[i]) {
theWords[i] = '<i>' + words[i] + '</i>';
} else {
theWords[i] = '<b>' + words[i] + '</b>';
}
}
div.innerHTML = theWords.join(' ');
});
const STATE_SELECT = 1;
const STATE_CHECK = 2;
var state = STATE_SELECT;
var rrr = function() {
if(state === STATE_CHECK) return;
$(this).toggleClass("red");
};
var ggg = function() {
if(state === STATE_CHECK) return;
$(this).toggleClass("green");
};
var yyy = function() {
$(".green").toggleClass("yellow");
if(state === STATE_CHECK) {
state = STATE_SELECT;
} else {
state = STATE_CHECK;
}
};
$("div").hover(rrr);
$("div").click(ggg);
$("button").click(yyy);
function start() {
и закрывающую }
в конце : )</body></html>
var player = {x:200, y:200, el:document.getElementById('player')};
player.el.style.left = '' + Math.round(player.x) + 'px';
player.el.style.top = '' + Math.round(player.y) + 'px';
var delta = {x:0, y:0};
document.addEventListener('keydown', function(e){
if( e.key == 'ArrowRight') delta.x = 1;
else if(e.key == 'ArrowLeft') delta.x = -1;
else if(e.key == 'ArrowUp') delta.y = -1;
else if(e.key == 'ArrowDown') delta.y = 1;
});
document.addEventListener('keyup', function(e){
if( e.key == 'ArrowRight') delta.x = 0;
else if(e.key == 'ArrowLeft') delta.x = 0;
else if(e.key == 'ArrowUp') delta.y = 0;
else if(e.key == 'ArrowDown') delta.y = 0;
});
var ts = null;
function step(timestamp) {
if(!ts) ts = timestamp;
var passed = timestamp - ts;
//if(passed < 200) return window.requestAnimationFrame(step);
ts = timestamp;
if(delta.x || delta.y) {
player.x += delta.x * passed / 10;
player.y += delta.y * passed / 10;
player.el.style.left = '' + Math.round(player.x) + 'px';
player.el.style.top = '' + Math.round(player.y) + 'px';
};
window.requestAnimationFrame(step);
}
window.requestAnimationFrame(step);
<script type="template" id="sourceCode">
. Скриптом копировать её оттуда, применять изменения и вставлять в DOM. При изменении размера, снова доставать нетронутую исходную разметку и переделывать под другую ширину. $('body').on('beforeSubmit', 'form', function(){
<body>
. С закрытием модального окна он не исчезает и слушатель, повешенный на него, остаётся. .on(...)
заменить на .one(...)
– это костыль, т.к. если форму не отправят, а только закроют модалку, в следующий раз отправится дважды.