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)