Смотрите, есть такой код: Код (Text): <div class="bbCodeBlock"> <div class="codeMessage" >one</div> </div> <div class="bbCodeBlock"> <div class="codeMessage" >two</div> </div> <div class="bbCodeBlock"> <div class="codeMessage" >three</div> </div> мне надо вставить в каждый bbCodeBlock кнопку, при клике кнопки должен выделяться содержимое codeMessage который принадлежит соответствующему bbCodeBlock, я напаял такой код, но он отказывается работать: Код (Text): function test() { var block = document.getElementsByClassName('bbCodeBlock'); // получаем массив всех div класса bbCodeBlock var select_button = '<input type="button" onclick="this.parentNode.getElementsByClassName(\'codeMessage\')[0].select()" value="Выделить" />'; // кнопка с атрибутами for ( var i = 0; i < block.length; i++ ) { // добавляем во все div класса bbCodeBlock кнопку block[i].innerHTML = block[i].innerHTML + select_button; } } window.onload = test; пишет: в чем косяк? PS JS толком не знаю, пишу только на знании C# и PHP, ну и по каким та примерам найденным в интернете. Добавлено спустя 13 минут 52 секунды: Попробовал убрать скобки от select, ошибку не выдает, но и не выделяет
Проверьте в консоли, какого типа this.parentNode.getElementsByClassName(...)[0]. Скорее всего, это какой-нибудь скаляр (возможно undefined или NaN), возможно - пустая коллекция, короче, не то, что нужно. Если это так - смотрите предыдущий уровень, что там выводится. Так можно подниматься до того уровня, который первый начинает возвращать не то. И разбираться там уже.
Может проблема в select? я сделал просто блок div с текстом, и на нем поставил Код (Text): onclick="this.select()" та же самая ошибка. хотя если сделать поле input type="text" и к нему прикрутить onclick все работает.