• Как использовать JavaScript в html?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Я так понимаю, что ты пытаешься запустить скрипт с помощью nodeJs, то есть в консоли пишешь:
    node script.js
    Но для того чтобы твой код заработал, достаточно просто открыть файл index.html в браузере.
    Ответ написан
    Комментировать
  • Подключение к сайту не защищено с сертификатом Lets Encrypt. Почему?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Возможно ты не перенаправил трафик с http на https
    Ответ написан
    Комментировать
  • Почему при загрузке страницы слайдер начинается с третьего слайда?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Потому что так работает браузер, если не указан z-index и два элемента находиться в одном месте на странице, то отображается тот, который был в коде записан последним:
    Сделай изначально у всех slider-item-ов opacity 0.
    Ответ написан
    Комментировать
  • Как возращать курсор в начало input?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    <input type="text" value="hello world" onclick="setCursor(event)">


    const setCursor = (e) => {
    	
      const input = e.target
      input.focus();
      input.setSelectionRange(0, 0);
    }


    Источник: https://developer.mozilla.org/en-US/docs/Web/API/H...
    Ответ написан
    Комментировать
  • Как на определенном блоке реализовать горизонтальный скролл?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    1) Вешаем на окно обработчик на событие scroll.
    2). При каждом скроле проверяем находиться ли блок, который должен скролиться горизонтально в пределах окна браузера
    3) Если да - блокируем на время возможность скрола, а блок который должен скролиться горизонтально сдвигаем с помощью translateX на определенное количество пикселей, в зависимости от того в какую сторону мы крутим колесико мыши.
    4) При каждом скроле(горизонтальном) проверяем прошел ли этот html элемент необходимую нам длину
    5) Если да, запускаем вертикальный скрол

    Почитать можно здесь:
    https://developer.mozilla.org/en-US/docs/Web/API/E...
    https://developer.mozilla.org/en-US/docs/Web/API/I...
    https://developer.mozilla.org/en-US/docs/Web/API/E...
    https://developer.mozilla.org/en-US/docs/Web/API/D...
    Ответ написан
    Комментировать
  • Что возвращает строчка return this.methods[op](a, b);?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    // Чтобы проще было понять 
    const methods = {
        "-": (a, b) => a - b,
        "+": (a, b) => a + b
      };
      
    console.log(methods["+"](1, 5)) // 6
    console.log(methods["-"](10, 1)) // 9

    methods - объект с двумя ключами + и -. Мы не можем напрямую обратиться к объекту вот так: methods.+
    Вместо этого мы пишем methods["+"], но по скольку по этому ключу храниться функция, мы можем сразу её вызвать, передав параметры.

    methods["+"](1, 5) // 1 + 5
    // Это тоже самое что
    
    const methods = {
        substract: (a, b) => a - b
        add: (a, b) => a + b
      };
    
    methods.add(1,5)
    Ответ написан
    2 комментария
  • Верно ли я сделал RoadMap для full-stack разработчика с нуля?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    HTML&CSS - однозначно
    jQuery - уже не обязательно, можно только для ознакомления, после того как выучишь JS
    Angular.js - React.js - Vue.js - для начала разобраться нужно в одном, проще всего VueJs но вакансий по нем меньше чем в React, а ангуляр, как по мне, уже потихоньку умирает.

    Python -> Django или JavaScript - Node.js - Express
    Python и JavaScript это языки, начинать нужно с них, JavaScript вообще стоит начать учить сразу после HTML, CSS. Касательно NodeJs & Express, Django нужны по сути для одного и тоже, для создания серверной части твоего приложение. NodeJs - низко типизированный и использует Javascript, Django высоко типизированный и использует Python, Express - это фрейморк для NodeJs, который внедряет некоторые фишки и помогает быстрее и проще писать серверный код. Я бы рекомендовал учить всё же Ноду + Експресс, потому что учить два языка немного сложновато одновременно

    SQL - MySQL - PostgreSQL -> MongoDB Из SQL для начала можно только основы изучить. MySQL и Postgres между собой схожи, но в детали тебе вникать не нужно, так как скорее всего для разработки ты будешь пользоваться какой то ОРМ. MongoDB - очень специфическая вещь, для всех проектов не подойдет. Её можно учить в самом конце
    Ответ написан
    6 комментариев
  • Как найти верный индекс элемента массива?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    <div class="container"></div>

    const run = () => {
    	const words =['King', 'Queen', 'Sword', 'King', 'Armor', 'King'];
      const $container = document.querySelector(".container");
    
      const getIndexes = (arr, target) => {
        return arr.reduce((acc, word, i) => {
          if(target === word) {
            acc.push({
              name: word,
              index: i
            })
          } else {
            acc.push({name: word});
          }
          return acc
        }, [])
      }
      const insertHTML = (list) => {
        list.forEach((item) => {
        	if(item.index !== undefined) {
          	var template = `<div data-index="${item.index}">${item.name}</div>`;
          } else {
          	var template = `<div data-index="">${item.name}</div>`
          }
          
          $container.insertAdjacentHTML('beforeend', template)
        })
      }
      
      insertHTML(getIndexes(words, "King"))
      
      
    	$container.addEventListener('mouseover', (e) => {
      	const index = e.target.getAttribute('data-index');
        if(index) {
        	console.log(index)
        }
      })
    }
    run()
    Ответ написан
    3 комментария
  • Как вывести данные из json на страницу?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Вместо main json создаете файл main.js и экспортируете по умолчанию (default) объект с полями title, subtitle.

    // main.js
    
    export default {
        title: "sun",
        subtitle: "earth",
        r: "mars"
    }

    <h1></h1>
    <h2></h2>
    <p></p>


    //index.js
    import data from './main.js';
    
    // Пишем функцию, чтобы не менять каждый элемент вручную
    const changeHtmlText = (querySelector, data) => {
        const $element = document.querySelector(querySelector);
        
        $element.textContent = data
    }
    changeHtmlText("h1", data.title);
    changeHtmlText("h2", data.subtitle);
    changeHtmlText("p", data.r);
    Ответ написан
    Комментировать
  • Как отключить дефолтное событие по клику (чтобы не произошел переход по ссылке)?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    // link - наша ссылка
    // На ссылку вешаем событие onclick, в коллбэк передаем event(событие)
    // preventDefault предотвращает дэфолтное поведение элементов страницы,
    // То есть если это ссылка, то браузер не перейдет по ссылке, если это форма, то форма не отправиться и тд...
    
    link.addEventListener('click', (e) =>{
        e.preventDefault();
    })
    Ответ написан
    1 комментарий
  • Как при вводе на телефоне в input поднять страницу?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Повесить на инпут обработчик событий при focus & focusout. И соотвественно делать body: translateY(-40px);
    Ответ написан
    Комментировать
  • Как удалять div элемент в проекте todolist?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Что то типа этого
    <div class="app" id="app">
            <input class="type" type="search"placeholder="Добавить дело">
            <button id="add"> add</button>
            <button id="clear"> clear</button>
            <div class="out">
            </div>
        </div>

    <script>
            let input = document.querySelector('.type'),
                out = document.querySelector('.out'),
                add = document.getElementById('add'),
                clear = document.getElementById('clear'),
                list = {}; // Объект в котором будет храниться наш todo-список
            // Функция рендера, каждый раз после изменения объекта list будет заново перерисовывать контент
            const renderList = () => {
                out.innerHTML = ''// Очищаем блок out
                for(let i in list){
                    // Через цикл пробегаемся через объект, и создаем соотвественные чекбоксы с класом и data-id
                    // data-id мы создаем когда добавляем новый todo элемент в функции addToList
                    let comp = document.createElement('div')
                    if(list[i].checked){
                        comp.innerHTML = `<input type="checkbox" class="checkbox-item" data-id="${i}" checked/> ${list[i].value}`
                    } else {
                        comp.innerHTML = `<input type="checkbox" class="checkbox-item" data-id="${i}"/> ${list[i].value}`
                    }
                    out.appendChild(comp)
                }
            }
            const toggleCheckbox = (e) => {
                // Изменяем статус чекбокса в объекте list
               if(!e.target.classList.contains('checkbox-item')) return;
               const todoId = e.target.getAttribute('data-id');
               list[todoId].checked = !list[todoId].checked 
            }
    
            // Функция для добавления элемента todo    
            const addToList = () => {
                const todoId = '_' + Date.now() // Генерируем уникальный айдишник
                
                // Это конкретный todo элемент по умолчанию checked:false
                list[todoId] = {
                    value: input.value,
                    checked: false
                }
                input.value = ''// Очищаем форму ввода
                renderList()
            }
            
            // Функция для очистки списка
            // Через цикл бежим по объекту, если todo элемент имеет статус checked значит мы удаляем его из объекта
            const clearList = () => {
                for(let i in list){
                    if(list[i].checked){
                        delete list[i]
                    }
                }
                renderList()
            }
    
            // Слушатели событий
            add.addEventListener('click', () => addToList())
            clear.addEventListener('click', () => clearList())
            out.addEventListener('click', () => toggleCheckbox(event))
    
        </script>
    Ответ написан
    1 комментарий
  • Как автоматически создать переменную в js?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Используйте объекты.
    Ответ написан
  • Как растянуть фоновое изображение?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    background-size: cover;
    Ответ написан
  • Как добавить данные из message.text в array telebot?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Как добавить данные из message.text в array telebot?

    Просто
    qq.append(message.text)
    keyboard1 = telebot.types.ReplyKeyboardMarkup(True,True)
    keyboard1.row(f"{day[0]}",f"{day[1]}",f"{day[2]}")
    keyboard1.row(f"{day[3]}",f"{day[4]}",f"{day[5]}")
    keyboard1.row("добавить инфо")
    qq = []
    
    @bot.message_handler(commands=['start'])
    def start_message(message):
             bot.send_message(message.chat.id, 'Which day you need' , reply_markup=keyboard1)
    
    @bot.message_handler(content_types=['text'])
    def send_text(message):
         if message.text == f"{day[0]}":
              bot.send_message(message.chat.id, "some text")
         elif message.text == 'добавить инфо':
              bot.register_next_step_handler(message, infoAdding)
    #если message.text == добавить инфо - мы переходим к функции infoAdding, message - #обязательный параметр, в нем храниться вся информация о сообщении
    #(имя пользователя который его прислал, текст сообщения, id и тд..)
    def infoAdding(message):
        bot.send_message(message.chat.id, "Введите информацию")
        bot.register_next_step_handler(msg, result)
        #Здесь, в  infoAdding - пользователь вводит нужную информацию, 
        #чтобы её получить нам нужно перейти к другой в функции
        # в нашем случае result но может быть любая другая. 
        # Тогда в функции result придет сообщение(message) с текстом который ввёл пользователь
    def result(message):
        qq.append(message.text)
        bot.send_message(message.chat.id, qq[0])
        #Здесь мы сохраняем значение message.text в наш массив qq
        #И бот отправляет нам первый элемент списка qq(для наглядности, что message.text добавлено в массив)
    Ответ написан
    Комментировать
  • Почему не работает if else внутри в if bot telegram?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    Почему не работает if else внутри в if bot telegram?

    Потому что здесь так нельзя. Если коротко: ты нажимаешь выбрать группу, в функцию send_text приходить message.text с номером группы но после того как ты нажимаешь выбрать день - новый message не приходит, а и бот проверяет условие if message.text == f"{uni_gr[0]}":...

    Для этого есть специальный объект bot.register_next_step_handler(message, next_step)

    P.S Ну а вообще для каждой группы и дня прописывать блок условий - это как то глупо, представь если тебе захочется добавить еще 1-2 группы - это +еще 20 строчек кода. Лучше создать базу данных и тогда все эти блоки с условиями можно будет уложить в несколько строчек.

    P.P.S Мне уже кажется что моя задача на этом сайте просто скидывать людям ссылку на эту страницу
    Ответ написан
    1 комментарий
  • Как сделать такой градиент на текст?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <style>
    h1 {
      font-family: 'Rubik One', sans-serif;
    font-size: 50px;
    background-image: radial-gradient(circle, #ffffff, #c4bcc7, #947a8a, #683d49, #370505);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    display: table;
    }
      </style>
      <title>Document</title>
    </head>
    <body>
    <h1>Test Text</h1>
    </body>
    </html>
    Ответ написан
    2 комментария
  • Как закруглить края кнопки tkinter на Python?

    Big_Trouble
    @Big_Trouble
    Программист недосамоучка
    По умолчанию в Tkinter нельзя создать Rounded Button(нет такой опции), но можно наложить на готовую кнопку изображение.
    1. Создаем в графическом редакторе изображение.
    2. Переписываем код ниже.
    3. Profit
    from tkinter import *
    root = Tk()
    
    loadimage = PhotoImage(file="image.png")
    roundedbutton = Button(root, image=loadimage) 
    roundedbutton["border"] = "0" # Обязательно убираем border!!
    roundedbutton.pack()
    root.mainloop()
    Ответ написан
    Комментировать