Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 19.06.2020, 15:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Сергей Ракипов
показывался блок kartinkaPriNavedenii
Какой именно или все? Ну поступать также как и в ранее показанном коде.

PS. Если это решаемо средствами CSS, то используйте его, не нужно грузить JS этим.
Ответить с цитированием
  #22 (permalink)  
Старый 19.06.2020, 16:15
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Сообщение от laimas Посмотреть сообщение
Какой именно или все? Ну поступать также как и в ранее показанном коде.
Я пробую но не получается, какие то ошибки

<div class="shriht">
			<a href="12_pt_serif_open_sans/" target="_blank" class="navedenie">PT Serif & Open Sans</a>
			<div class="kartinka_pri_navedenii">
				<img src="kartinka/12.png" alt="">
			</div>
		</div>

		<div class="shriht">
			<a href="13_pt_sans_pt_serif/" target="_blank" class="navedenie">PT sans & PT serif</a>
			<div class="kartinka_pri_navedenii">
				<img src="kartinka/13.png" alt="">
			</div>
		</div>
Ответить с цитированием
  #23 (permalink)  
Старый 19.06.2020, 16:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

let navedenie = document.querySelectorAll(".navedenie"); - это коллекция элементов, let kartinkaPriNavedenii = document.querySelectorAll(".kartinka_pri_navedenii "); - это тоже коллекция элементов. При этом, как выясняется, каждый элемент коллекции kartinkaPriNavedenii является дочерним элементом соответствующего элемента коллекции navedenie. Как понять чего вам хочется, если это две коллекции? Если управлять только своим дочерним элементом, то зачем вы получаете коллекцию kartinkaPriNavedenii?

Кстати, kartinkaPriNavedenii - это может и говорит вам о чем-то, но все-таки, такие ребусы читать не из приятного.

И зачем так, ради "потренироваться" или же так и будет работать. Если последнее, то решать это посредством JS крайне плохая практика.
Ответить с цитированием
  #24 (permalink)  
Старый 19.06.2020, 16:58
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

laimas,
Я пока учусь в свободное время, честно не очень получается.
Ответить с цитированием
  #25 (permalink)  
Старый 19.06.2020, 17:03
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Я сделал себе вот такую подсказку

https://rakipov.ru/shrift/


И мне нужно что бы это работало вот так, но для всех блоков, а не для одного.

const navedenie = document.querySelectorAll(".navedenie");
const kartinkaPriNavedenii = document.querySelector(".kartinka_pri_navedenii");

function priNavedenii_1() {
    let navedenie = document.querySelectorAll(".navedenie");
    let test = navedenie.getBoundingClientRect();

    console.log(test.top);

    function priNavedenii_2() {

        if (test.top >= 387) {
            kartinkaPriNavedenii.style.visibility = "visible";
            kartinkaPriNavedenii.style.top = "-387" + "px";
        } else if (test.top >= 0) {
            kartinkaPriNavedenii.style.visibility = "visible";
            kartinkaPriNavedenii.style.top = "0" + "px";
        }
    }
    navedenie.addEventListener("mouseover", priNavedenii_2);
}
window.addEventListener('mousemove', priNavedenii_1);


function priNavedenii_3(){
    kartinkaPriNavedenii.style.visibility = "hidden";

}
navedenie.addEventListener("mouseout", priNavedenii_3);
Ответить с цитированием
  #26 (permalink)  
Старый 20.06.2020, 07:20
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

Сообщение от laimas Посмотреть сообщение
Можете "соединить" два значения в одно, страшного не будет. А вообще, параметр, это формальный параметр, передаваемое снаружи в функцию входное значение. А аргумент, фактическая переменная, значение которой используется как входное при вызове функции. Причем эту трактовку не обязательно вы встретите во всех языках.

https://developer.mozilla.org/ru/doc...uide/Functions
Сегодня прочитал, что к аргументу, нужно относится как переменной, это так или я поплыл не туда.
Ответить с цитированием
  #27 (permalink)  
Старый 20.06.2020, 08:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,072

Сообщение от Сергей Ракипов
для всех блоков,
<script>
document.addEventListener( "DOMContentLoaded" , function() {
let div = document.querySelector('.kolonki');
let changeTop = {
handleEvent(event) {
const target = event.target.closest('.shriht');
if (!target) return;
let rect = target.getBoundingClientRect();
let divPicture = target.querySelector('.kartinka_pri_navedenii');
let Height = divPicture.offsetHeight;
let h = rect.top + Height > innerHeight ? innerHeight - (rect.top + Height + 10) : 0;
divPicture.style.setProperty('top', `${h}px`)
}};
div.addEventListener('mouseenter', changeTop, true);
  });
</script>
Ответить с цитированием
  #28 (permalink)  
Старый 20.06.2020, 09:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от Сергей Ракипов
к аргументу, нужно относится как переменной
Все проще будет, если от естественного. Функции передаются параметры, которые описаны, причем в языках типизированных указаны и типы параметров, и возвращаемый функцией тип. Например функция:

int function_name(int a, int b) в Си - передаваемые в функцию параметры, это integer и функция возвращает integer. В РНР тип возвращаемый функцией описывается в конце после двоеточия, например function_name(array $a) : number. Если передаваемый параметр не будет соответствовать типу, то это вызовет ошибку.

Вызывая функцию вы передаете ей параметры - function_name(23, 99). Функция принимает эти параметры, которые являются ее аргументами:

function_name(a, b) {
    a и b - аргументы функции
}


PS. Строго говоря, аргументы функции нельзя назвать переменными, значение их зависит от переданных в функцию параметров, это да.

Последний раз редактировалось laimas, 20.06.2020 в 09:26.
Ответить с цитированием
  #29 (permalink)  
Старый 20.06.2020, 10:17
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

рони,
Как всегда спасибо, очень приятно знать что есть такие люди как вы
Ответить с цитированием
  #30 (permalink)  
Старый 20.06.2020, 10:19
Профессор
Отправить личное сообщение для Сергей Ракипов Посмотреть профиль Найти все сообщения от Сергей Ракипов
 
Регистрация: 01.06.2010
Сообщений: 651

laimas,
Буду еще разбираться, и я кроме верстки не чего не знаю JS это для меня первый язык
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показывать по 5 блоков Meduzaweb Общие вопросы Javascript 2 29.03.2018 16:07
Как с помощью скрипта высчитать ширину полосы прокрутки? LADYX Элементы интерфейса 35 13.11.2017 12:50
Скрипт карусели блоков rozmakc Работа 3 25.07.2016 21:35
Через ajax отправить много данных из таблицы на сервер Heger jQuery 3 29.08.2012 18:51
Чудеса математики js при padding borovik Элементы интерфейса 6 09.07.2011 22:02