Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.06.2018, 19:00
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

В var лежит блок html, внутри блока запрос querySelector('#text') не находит элемент
В переменной лежит блок html, но внутри блока не ищет элемент по запросу querySelector('#text'), хотя он там есть. Можете подсказать в чём проблема?


(ЗАПРОСЫ)
var open_submit_button = document.getElementById('submit-button'); 
open_submit_button.removeAttribute("disabled");

var submit_button = open_submit_button.querySelector('#text');

// вывод элемента 1
console.log('Элемент 1: open_submit_button - ' + open_submit_button); 
console.log(open_submit_button);                          

// вывод элемента 2
console.log('Элемент 2: submit_button - ' + submit_button); // выдаёт null
console.log(submit_button);



(ОТВЕТЫ В КОНСОЛИ)


Элемент 1: open_submit_button - [object HTMLElement]

<ytd-button-renderer id=​"submit-button" class=​"style-scope ytd-commentbox style-primary" button-renderer is-paper-button>
  <a class=​"yt-simple-endpoint style-scope ytd-button-renderer" tabindex=​"-1">
    <paper-button role=​"button" tabindex=​"0" animated aria-disabled=​"false" elevation=​"0" id=​"button" class=​"style-scope ytd-button-renderer style-primary" aria-label=​"Оставить комментарий" style>
      <yt-formatted-string id=​"text" class=​"style-scope ytd-button-renderer style-primary">​Оставить комментарий​</yt-formatted-string>
    </paper-button>
  </a>
</ytd-button-renderer>


Элемент 2: submit_button - null

null

--------- КОНЕЦ КОНСОЛИ ---------
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2018, 20:01
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

у вас там где id= какой-то не понятный символ после равно.
сотрите везде равно и на печатайте с клавиатуры

<ytd-button-renderer id="submit-button" class=​"style-scope ytd-commentbox style-primary" button-renderer is-paper-button>
  <a class=​"yt-simple-endpoint style-scope ytd-button-renderer" tabindex=​"-1">
    <paper-button role=​"button" tabindex=​"0" animated aria-disabled=​"false" elevation=​"0" id=​"button" class=​"style-scope ytd-button-renderer style-primary" aria-label=​"Оставить комментарий" style>
      <yt-formatted-string id="text" class=​"style-scope ytd-button-renderer style-primary">​Оставить комментарий​</yt-formatted-string>
    </paper-button>
  </a>
</ytd-button-renderer>

<script>
	var open_submit_button = document.getElementById('submit-button');
//open_submit_button.removeAttribute("disabled");

var submit_button = open_submit_button.querySelector('#text');

// вывод элемента 1
console.log('Элемент 1: open_submit_button - ' + open_submit_button); 
console.log(open_submit_button);                          

// вывод элемента 2
console.log('Элемент 2: submit_button - ' + submit_button); // выдаёт null
console.log(submit_button);

</script>
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2018, 20:11
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

О, благодарю! И как такую вещь только нашли? Этот блок кода с неподвластной мне страницы считывается. Случайно не знаете как эту ошибку можно обойти? Можно попробовать перерисовать другим скриптом прямо на странице, наверное...
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2018, 20:21
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

тут видно что шрифт черный, значит что-то не так.

как вы этот блок получаете?
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2018, 20:44
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

Что значит чёрный? Цвет или защита какая-то подразумевается?
Получаю блок так (первая строка поста):
var open_submit_button = document.getElementById('submit-button');

через расширение для браузера Tampermonkey.

Последний раз редактировалось Alexoner, 05.06.2018 в 20:47.
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2018, 01:45
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

Попробовал получить элемент и по id и по тегу:
var submit_button1 = open_submit_button.querySelector("#text");
var submit_button2 = open_submit_button.querySelector("yt-formatted-string");

И всё равно в переменных null... Даже не знаю, что за фигня.

Вот снова этот блок в котором пытаюсь найти элементы и в этот раз багов в блоке вроде нет, но не находятся элементы.
<ytd-button-renderer id="submit-button" class="style-scope ytd-commentbox style-primary" button-renderer="" is-paper-button="">
  <a class="yt-simple-endpoint style-scope ytd-button-renderer" tabindex="-1">
    <paper-button role="button" tabindex="0" animated="" aria-disabled="false" elevation="0" id="button" class="style-scope ytd-button-renderer style-primary" aria-label="Оставить комментарий" style="">
      <yt-formatted-string id="text" class="style-scope ytd-button-renderer style-primary">Оставить комментарий</yt-formatted-string>
    </paper-button>
  </a>
</ytd-button-renderer>


(оригинал)
<ytd-button-renderer id="submit-button" class="style-scope ytd-commentbox style-primary" button-renderer="" is-paper-button=""><a class="yt-simple-endpoint style-scope ytd-button-renderer" tabindex="-1"><paper-button role="button" tabindex="0" animated="" aria-disabled="false" elevation="0" id="button" class="style-scope ytd-button-renderer style-primary" aria-label="Оставить комментарий" style=""><yt-formatted-string id="text" class="style-scope ytd-button-renderer style-primary">Оставить комментарий</yt-formatted-string></paper-button></a></ytd-button-renderer>
Ответить с цитированием
  #7 (permalink)  
Старый 06.06.2018, 11:39
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<ytd-button-renderer id="submit-button" class="style-scope ytd-commentbox style-primary" button-renderer="" is-paper-button="">
	<a class="yt-simple-endpoint style-scope ytd-button-renderer" tabindex="-1">
		<paper-button role="button" tabindex="0" animated="" aria-disabled="false" elevation="0" id="button" class="style-scope ytd-button-renderer style-primary" aria-label="Оставить комментарий" style="">
			<yt-formatted-string id="text" class="style-scope ytd-button-renderer style-primary">Оставить комментарий</yt-formatted-string>
		</paper-button>
	</a>
</ytd-button-renderer>


<script>
var open_submit_button = document.getElementById('submit-button');
var submit_button2 = open_submit_button.querySelector("yt-formatted-string");

	console.log(submit_button2);

</script>


работает вроде
Ответить с цитированием
  #8 (permalink)  
Старый 06.06.2018, 15:31
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

На той странице это не работает. Возможно блокируется чем-то такой вариант получения данных. Решения пока не нашёл...
Ответить с цитированием
  #9 (permalink)  
Старый 06.06.2018, 18:23
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

дайте ссылку я гляну
Ответить с цитированием
  #10 (permalink)  
Старый 06.06.2018, 19:31
Интересующийся
Отправить личное сообщение для Alexoner Посмотреть профиль Найти все сообщения от Alexoner
 
Регистрация: 24.06.2016
Сообщений: 15

Вот страница
https://www.youtube.com/watch?v=gEIK9Tkw3KU

Вот весь код который пытаюсь применить.
(пишу его в расширении Tampermonkey браузера Chrome)
// ==UserScript==
// @name         test 23
// @namespace    YouTube
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        [url]https://www.youtube.com/*[/url]
// @grant        none
// ==/UserScript==
// [url]https://www.youtube.com/watch?v=gEIK9Tkw3KU[/url]


(function() {
    'use strict';

	window.onload = function() {

	  create_button (); // Создаёт кнопку

	  div1.onclick = function () {
				  div1_onclick();
			  }

	  var div1;

		// Создаёт кнопку
	  function create_button () {

		div1 = document.createElement('div');
		div1.innerHTML = 'кнопка';
		div1.style.zIndex = 9999;
		div1.style.marginTop = "42px";
		div1.style.color = "red";
		div1.style.fontSize = "15px";
		div1.style.background = "lime";
		div1.style.position = "fixed";
		div1.style.cursor = "pointer";
		document.body.appendChild(div1);
	  } //------ end function create_button


	  function div1_onclick (){

		window.scrollTo(0,600); // прокручивает окно для загрузки нужного элемента
		var elem1;

		get_elem();

			// ожидает загрузки нужного элемента на странице
			// innercount - счётчик попыток
		function get_elem(innercount = 0){

		 elem1 = document.getElementById('placeholder-area');

		 if (elem1 == null) {

			  // Ограничение на количество попыток поиска элемента.
		   if (innercount > 10 && innercount < 20) {

			  window.scrollTo(0,900); // прокрутить окно ещё немного

		   } if(innercount > 20) { // если прокрутка не помогла, то остановка поиска
			  alert("элемент не найден");
			  return;
		   }

		   innercount++; // количество попыток поиска
		   console.log('innercount - ' + innercount);

			  // запускается, пока не появится нужный элемент
		   setTimeout(get_elem, 1000, innercount);
		   console.log("IF: elem1 = " + elem1);

			//  элемент появился
		 } else {
		   console.log("ELSE: elem1 = " + elem1);

		  elem1.click(); // активирует загрузку блока для последующего поиска в нём

		   var open_submit_button = document.getElementById('submit-button'); // HTML-блок

		   var submit_button1 = open_submit_button.querySelector("#text"); // null...
		   var submit_button2 = open_submit_button.querySelector("yt-formatted-string"); // null...

		   // (ДРУГОЙ ПУТЬ)
		   // var submit_button_3 = document.getElementsByTagName("yt-formatted-string > ytd-button-renderer"); // collection хрень
		   // var submit_button_3 = document.querySelectorAll("yt-formatted-string > #text"); //Node хрень
		   var submit_button3 = document.getElementsByTagName("yt-formatted-string"); // куча элементов
		   //var inner_search = submit_button3.querySelector("#text"); // is not a function...
		   var inner_search = submit_button3.querySelectorAll("#text"); // is not a function...

		   console.log('Элемент 0: open_submit_button - ' + open_submit_button);
		   console.log(open_submit_button);

		   console.log('Элемент 1: submit_button1 - ' + submit_button1);
		   console.log(submit_button1);

		   console.log('Элемент 2: submit_button2 - ' + submit_button2);
		   console.log(submit_button2);

		   console.log('Элемент 3: submit_button3 - ' + submit_button3);
		   console.log(submit_button3);

		   console.log('Элемент 4: inner_search - ' + inner_search);
		   console.log(inner_search);
		 }
		} //---------- end function get_elem


	}; //------------div1.onclick = function()


  }; //------ end window.onload = function()


})();

Последний раз редактировалось Alexoner, 06.06.2018 в 19:59.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
42 одинаковых скрипта c различными парам-ми на одной странице dimas15 Общие вопросы Javascript 2 10.03.2016 16:23
Настройка калькулятора enable209 Элементы интерфейса 18 13.01.2016 12:27
Помогите убрать один элемент из скрипта Marlboro Javascript под браузер 0 15.11.2013 19:27
Скроллинг клавишами и липкие блоки bes Общие вопросы Javascript 11 12.06.2012 22:08
... и все же, как прогнать в цикле? Ankh Ваши сайты и скрипты 12 21.07.2011 09:36