Ответы пользователя по тегу JavaScript
  • Как по клику изменить текст?

    @AlexRsk
    <button data-toggle="0" onclick="toggle(this)" id="push-me">Открыть</button>

    function toggle(el)
    {
       let toggleStatus = el.getAttribute('data-toggle');
       el.innerHTML = toggleStatus == "0" ? 'Закрыть':'Открыть';
       el.setAttribute('data-toggle',  toggleStatus == "0" ? "1" :"0");
    }
    Ответ написан
  • Как объединить два класса в JS?

    @AlexRsk
    Можно сделать через примеси и шаблон "поведение".
    // Реализует наследование
    function inherit(proto) {
    	function F() {}
    	F.prototype = proto;
    	var object = new F;
    	return object;
    }
    
    //Реализует примеси
    function mixin(dest, src) {
    	var field, tempObj = {};
    	for (field in src) {
    		if (typeof(tempObj[field]) == undefined || (tempObj[field] != src[field])) {
    			dest[field] = src[field];
    		}
    	}
    }
    
    /* Behaviors  */
    
    //Поведение позволяет осуществить примешивание к целевому классу новых методов и свойств.
    
    // приватные свойства
    behavior = function(targetObj, name) {
    	this.name = name;
    	this.owner = targetObj;
    };
    
    behavior.prototype = {
    "mixin": function(dest, src) {
    		var field, systemNames = ['setOwner', 'getOwner', 'apply'],
    			tempObj = {};
    		for (field in src) {
    			if (
    			(typeof(tempObj[field]) == undefined || (tempObj[field] != src[field])) 
    && systemNames.indexOf(src[field]) === -1) {
    				dest[field] = src[field];
    			}
    		}
    	},
    
    	"setOwner": function(owner) {
    		this.Class = this.constructor.name;
    		this.owner = owner;
    		if (this.apply) {
    			this.apply();
    		}
    		mixin(this.owner, this);
    
    	},
    	"getOwner": function() {
    		return owner;
    	},
    	"apply": function() {
    
    		this.mixin(this.owner, this);
    	}
    
    };
    
    applyToBehavior = function() {};
    applyToBehavior.prototype = inherit(behavior.prototype);
    applyToBehavior.prototype.applyTo = function(targetObj, methodName, param) {
    	if (targetObj && this[methodName]) {
    		this[methodName].call(targetObj, param);
    	}
    };
    Ответ написан
    Комментировать
  • Как правильно построить график Canvas?

    @AlexRsk
    Если большие разбросы между значениями, советую задуматься о логарифмической шкале Y вместо линейной.
    Ответ написан
    1 комментарий
  • Не работают табы. Что не правильно в коде?

    @AlexRsk
    Ну дык у тебя data-target = "tab1" везде.
    Ответ написан
    Комментировать