- 1
- 2
$(document.getElementById("badgeEndDay")).add("background-badge");
$("#badgeEndDay span").css("color", #f5f5f5");
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
$(document.getElementById("badgeEndDay")).add("background-badge");
$("#badgeEndDay span").css("color", #f5f5f5");
Типичный говнокод, который штампуют js макаки, набраные по рекомендации друзей шефа.
+2
function xPost(t,v){
var xmlHttpReq = false;
var self = this;
if(window.XMLHttpRequest){self.xmlHttpReq=new XMLHttpRequest();}
else if(window.ActiveXObject){self.xmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");}
self.xmlHttpReq.open('POST',"http"+(gethttps()?'s':'')+"://www.gkh-kemerovo.ru/portal2/hint.php",true);
self.xmlHttpReq.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
self.xmlHttpReq.onreadystatechange = function(){
if(self.xmlHttpReq.readyState == 4){
upd(t,self.xmlHttpReq.responseText);}}
self.xmlHttpReq.send(gqu(t,v));}
function gqu(t,v){
switch(t){
case 'street': q='t='+t;break;
default: q='t='+t+'&v='+v;}return q;}
function upd(t,s){
if(s=='false'){window.alert('Личный кабинет временно не доступен. Просим прощения за доставленные неудобства. Попытайтесь войти позднее.');return false;}
switch(t){
case 'street':streets=JSON.parse(s);/*alert(names(streets))*/;break;
case 'house':houses=JSON.parse(s);/*alert(names(houses));*/break;
case 'flat':flats=JSON.parse(s);/*alert(names(flats));*/break;
case 'lk':document.getElementById('el').innerHTML="";if(s=='5'){fa.action="/portal/index.php";}if(s=='7'){fa.action="/portal2/index.php";}if(s=='0'){document.getElementById('el').innerHTML="Неправильный лицевой счет";}
}}
function gohttps(){var a=document.location.toString();window.location='https'+a.substr(4,a.length);}
function gethttps(){if(document.location.toString().indexOf('https://')==-1)return false;else return true;}
оригинальное форматирование сохранено
0
checkTableFilters () {
if (this._activeTableFilter && this._filter.filter._filters.get(this._activeTableFilter)) {
this._filter.filter._filters.get(this._activeTableFilter).Update();
}
}
"Так вышло" - хороший ответ.
1. this._filter.filter._filters (фильтры фильтра фильтра?..)
2. Зачем имитировать приватность полей класса соглашением о наименовании, если её игнорируют как могут?..
3. ... дополните сами
+2
let tableCellHamburgers = Array.prototype.slice.call(document.getElementsByClassName('js-listen__letters-table__hamburger'));
tableCellHamburgers.forEach((tableCellHamburger) => {
let code = Array.prototype.slice.call(tableCellHamburger.classList).filter(elem => elem.indexOf('js-table__cell__hamburger__') === 0)[0].replace('js-table__cell__hamburger__', '');
let searchInput = document.querySelector(`.js-table__cell__search-input__${code}`);
if (!(searchInput && searchInput.value)) {
tableCellHamburger.style.filter = 'none';
}
let dropdownContent = document.querySelector(`.js-table__cell__dropdown-content__${code}`);
if (dropdownContent) {
dropdownContent.style.display = 'none';
}
});
Автор этого кода (full-stack программист) собирался выпилить jQuery из проекта, т.к. всю работу с DOM давно можно красиво писать на чистом ES6. К счастью, он уволился, не осуществив свой замысел.
+2
(function(_){
_.mixin({makeCarouselWidget: function (container, el, width, height, tmpl) {
var list_of_rows = _(container).groupBy(function(e, index){
return Math.floor(index / (width * height));
}); // transform collection to list by 'num_of_cols' chunks
_(list_of_rows).each(function(row){
var list_of_chunks = _(row).groupBy(function(e, index){
return Math.floor(index/width);
});
var li = $('<li>').appendTo(el);
_.each(list_of_chunks, function(chunk){
var r = $('<div>').attr('class','row fooitem')
.attr('style', "margin-right:50px;").appendTo(li);
_.each(chunk, function(item){
r.append(
tmpl.render(item)
);
});
})
}); // each list_of_rows
}});
})(_);
Я хочу быть кочегаром, кочегаром, кочегаром.
Работать сутки-через-трое, через-трое, через-трое...
+2
...
removed: function(row) {
if ($(row).find('textarea')[0].style.backgroundColor === "red") {
$(row).find('textarea')[0].style.backgroundColor = "white";
--disabled_elements_count;
}
if (disabled_elements_count === 0) {
$("input[type='submit']").prop('disabled', false);
}
}, ...
+1
$( obj ).text( "Сохранение..." );
$.ajax({
url: url,
type: "POST",
data: params,
dataType: "json",
success: function( response ) {
$(obj).parent().parent().parent().parent().parent().html( response.data );
prepareeventhandlers();
}
});
+1
function preventSelection(element){
var preventSelection = false;
function addHandler(element, event, handler){
if (element.attachEvent)
element.attachEvent('on' + event, handler);
else
if (element.addEventListener)
element.addEventListener(event, handler, false);
}
function removeSelection(){
if (window.getSelection) { window.getSelection().removeAllRanges(); }
else if (document.selection && document.selection.clear)
document.selection.clear();
}
function killCtrlA(event){
var event = event || window.event;
var sender = event.target || event.srcElement;
if (sender.tagName.match(/INPUT|TEXTAREA/i))
return;
var key = event.keyCode || event.which;
if (event.ctrlKey && key == 'A'.charCodeAt(0)) // 'A'.charCodeAt(0) можно заменить на 65
{
removeSelection();
if (event.preventDefault)
event.preventDefault();
else
event.returnValue = false;
}
}
// не даем выделять текст мышкой
addHandler(element, 'mousemove', function(){
if(preventSelection)
removeSelection();
});
addHandler(element, 'mousedown', function(event){
var event = event || window.event;
var sender = event.target || event.srcElement;
preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
});
// борем dblclick
// если вешать функцию не на событие dblclick, можно избежать
// временное выделение текста в некоторых браузерах
addHandler(element, 'mouseup', function(){
if (preventSelection)
removeSelection();
preventSelection = false;
});
// борем ctrl+A
// скорей всего это и не надо, к тому же есть подозрение
// что в случае все же такой необходимости функцию нужно
// вешать один раз и на document, а не на элемент
addHandler(element, 'keydown', killCtrlA);
addHandler(element, 'keyup', killCtrlA);
}
Долбоёбы борются с ветряными мельницами.
0
protected setElementModel(formModel: any): any {
var self = this;
var workModel = jQuery.extend(true, {}, formModel, {
onSave: function (e) { e.preventDefault(); self._onSave(e); },
onSaveExit: function (e) { e.preventDefault(); self._onSaveExit(e); },
onCancel: function (e) { e.preventDefault(); self._onCancel(e); },
}
);
return self.setModel(workModel);
}
protected setModel(formModel: any): any {
return formModel;
}
typescript at its best
+3
const arr = [['govno', 'shit'], ['kod', 'code']]
//we expect it to be {'govno': 'shit', 'kod' : 'code'}
//unsupported(yet)
Object.fromEntries = arr =>
Object.assign({}, ...Array.from(arr, ([k, v]) => ({[k]: v}) ));
const res1 = Object.fromEntries(arr)
const res2 = arr.reduce((res, [key, value]) => Object.defineProperty(res, key, {'value': value, 'enumerable': true}), {})
const res3 = {}
arr.forEach(([key, value]) => res3[key] = value)
А как превратить массив пар ключ-значение в ассоциативный на Вашем языке?