Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 30.03.2017, 11:59
Аватар для shyxeroks
Аспирант
Отправить личное сообщение для shyxeroks Посмотреть профиль Найти все сообщения от shyxeroks
 
Регистрация: 02.03.2017
Сообщений: 38

Alexandroppolus, я сделал так:
////// открыть div со смайлами
function open_smile(div){
if($('.smile_block').css('display') == 'none'){	
$('.'+div).focus();
$('.smile_block').fadeIn(500);	
$('.smile').css('opacity','1');	
}
}	
//// вставить смайл
function smile_add(div, src){
var block = document.querySelector(div);	
var test = div.querySelectorAll('img.smile_add_block').length;
alert(test)
var sel = window.getSelection();
if (!sel || !sel.rangeCount) { return; }
var r = sel.getRangeAt(0);
if (!r) { return; }
for (var n = r.commonAncestorContainer; n != block; n = n.parentNode) {
if (!n) { return; }
}
var img = new Image();
img.className = 'smile_add_block';
img.src = src;
r.deleteContents();
r.insertNode(img);  
r = document.createRange();
r.selectNode(img);
r.collapse(false);
sel.removeAllRanges();
sel.addRange(r);
try {
block.focus();
}catch(exc){}
}

В консоли ругается на querySelectorAll. Еще такой вопрос, querySelector ищет на странице только один элемент, а querySelectorAll все элементы на странице, то бишь это div переданный в функцию, правильно? С php проблем нет, js на стадии изучения, благодарю)
У нас же уже есть переменная var block = document.querySelector(div);
Может block использовать просто нужно?

Последний раз редактировалось shyxeroks, 30.03.2017 в 12:06.
Ответить с цитированием
  #22 (permalink)  
Старый 30.03.2017, 12:16
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

https://jsfiddle.net/5nn9t4j6/

Сообщение от shyxeroks
document.querySelector(div);
вот это вообще не понял.
у тебя есть див. Собери по нему картинки, посмотри количество. Больше ничего не надо квериСелектить.
Ответить с цитированием
  #23 (permalink)  
Старый 30.03.2017, 12:36
Аватар для shyxeroks
Аспирант
Отправить личное сообщение для shyxeroks Посмотреть профиль Найти все сообщения от shyxeroks
 
Регистрация: 02.03.2017
Сообщений: 38

Alexandroppolus, не знаю почему, но консоль ругается на querySelectorAll. Вот весь код:
<div class="smile_block">
<span class="smile_close" onclick="exit_smile();">X</span>
<?for($i=1;$i<=48;$i++){?>
<img src="/images/smile/<?=$i;?>.gif" class="smile_add" onclick="smile_add('<?=$smile_pages_info;?>','/images/smile/<?=$i;?>.gif');">
<?}unset($i);?>
<div class="smile_error">Не больше 3-ех в одной записи/письме/сообщении.</div>
</div>


////// открыть блок со смайлами
function open_smile(div){
if($('.smile_block').css('display') == 'none'){	
$('.'+div).focus();
$('.smile_block').fadeIn(500);	
$('.smile').css('opacity','1');	
}
}	
////// закрыть блок со смайлами
function exit_smile(){
if($('.smile_block').css('display') == 'block'){		
$('.smile_block').fadeOut(500);	
$('.smile').css('opacity','');	
}
}
///// вставить смайл
function smile_add(div,src) {
	if (div.querySelectorAll('img.smile_add_block').length > 3) {
$('.smile_error.').fadeIn(500);
$('.smile_error').delay(3000).fadeOut(500); 
    try { div.focus(); } catch(exc) {}
    return;
  }

	var sel = window.getSelection();
  if (!sel || !sel.rangeCount) { return; }
  var r = sel.getRangeAt(0);
  if (!r) { return; }
  
  for (var n = r.commonAncestorContainer; n != div; n = n.parentNode) {
  	if (!n) { return; }
  }
  
  var img = new Image();
  img.className = 'smile_add_block';
  img.src = src;
  r.deleteContents();
  r.insertNode(img);
  
  r = document.createRange();
  r.selectNode(img);
  r.collapse(false);
  sel.removeAllRanges();
  sel.addRange(r);
  try { div.focus(); } catch(exc) {}
}

По-моему я запутался уже
В консоле ошибка:
Uncaught TypeError: Cannot read property 'querySelectorAll' of null
at smile_add (smile.js:64)
at HTMLImageElement.onclick (VM43380 :1)

Последний раз редактировалось shyxeroks, 30.03.2017 в 12:40.
Ответить с цитированием
  #24 (permalink)  
Старый 30.03.2017, 13:33
Аватар для shyxeroks
Аспирант
Отправить личное сообщение для shyxeroks Посмотреть профиль Найти все сообщения от shyxeroks
 
Регистрация: 02.03.2017
Сообщений: 38

Все разобрался. Вопрос снят. Благодарю!!!

Последний раз редактировалось shyxeroks, 30.03.2017 в 13:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Регулярное выражение tata4ka Общие вопросы Javascript 4 15.11.2014 00:56
Регулярное выражение и метод test tsigel Общие вопросы Javascript 3 30.08.2013 13:47
регулярное выражение literator Ваши сайты и скрипты 1 18.08.2013 18:24
Регулярное выражение: любой символ, включая перевод строки Gleb Общие вопросы Javascript 3 28.07.2011 12:15
регулярное выражение theo_ Общие вопросы Javascript 15 21.06.2010 10:29