Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.03.2014, 23:34
Интересующийся
Отправить личное сообщение для Павел Пичужкин Посмотреть профиль Найти все сообщения от Павел Пичужкин
 
Регистрация: 23.02.2011
Сообщений: 13

Ошибка при обращении к созданному элементу
Люди, подскажите! Такая проблема: с помощью приведённого ниже кода генерируется элемент, при клике на который должен сворачиваться элемент с определённым идентификатором, генерируемым после него. Но при клике по первому элементу во всех браузерах кроме хрома выкидывает ошибку [object Object]. Можно ли при генерации элемента повесить на него onClick не с помощью href, а как-нибудь типа yearItemLink.onclick = '...'? Сайт, где используется скрипт: shkolyar.my1.ru.

var yearItemLink = document.createElement('a');
yearItemLink.href = 'javascript:$(\'#year'+(Shkolyar[itemNumber].Year)+'\').slideToggle(\'300\')';
yearItemLink.title = 'Номера газеты за '+(Shkolyar[itemNumber].Year)+' год';
yearItemLink.appendChild(document.createTextNode((Shkolyar[itemNumber].Year)+' год'));
leftmenu.appendChild(yearItemLink);

var yearList = document.createElement('div');
yearList.id = 'year'+(Shkolyar[itemNumber].Year);
if ((Shkolyar[itemNumber].Year) == (Shkolyar[hash].Year)) {
yearList.style.display = 'block';
}
yearList.className = 'yearlist';
leftmenu.appendChild(yearList);
Ответить с цитированием
  #2 (permalink)  
Старый 05.03.2014, 03:08
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Сообщение от Павел Пичужкин
ошибку [object Object]
Не слышал про такую ошибку. Скрин можно?
Сообщение от Павел Пичужкин
как-нибудь типа yearItemLink.onclick
Конечно. Даже нужно! Только не строку присваивай, а функцию:
bla.onclick = function() {
    alert('bla bla');
};


Только если у тя jquery подключена, че ты х*ней страдаешь?
var $yearLink = $('<a>', {text: 'year bla bla', title: 'Номера газеты'});
$yearLink.click(function() {alert('bla')});
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #3 (permalink)  
Старый 05.03.2014, 19:58
Интересующийся
Отправить личное сообщение для Павел Пичужкин Посмотреть профиль Найти все сообщения от Павел Пичужкин
 
Регистрация: 23.02.2011
Сообщений: 13

Написал так, но что-то всё равно не пашет
var yearItemLink = document.createElement('a');
yearItemLink.onclick = function() {
$('#year'+(Shkolyar[itemNumber].Year)).slideToggle('300');
};
yearItemLink.title = 'Номера газеты за '+(Shkolyar[itemNumber].Year)+' год';
yearItemLink.appendChild(document.createTextNode((Shkolyar[itemNumber].Year)+' год'));
leftmenu.appendChild(yearItemLink);
Ответить с цитированием
  #4 (permalink)  
Старый 05.03.2014, 21:49
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Павел Пичужкин, ты в состоянии сделать полный тестовый пример, а не показывать эти огрызки?

Последний раз редактировалось ksa, 06.03.2014 в 08:30.
Ответить с цитированием
  #5 (permalink)  
Старый 06.03.2014, 02:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Мож у тя jquery не подключена?
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #6 (permalink)  
Старый 06.03.2014, 13:51
Интересующийся
Отправить личное сообщение для Павел Пичужкин Посмотреть профиль Найти все сообщения от Павел Пичужкин
 
Регистрация: 23.02.2011
Сообщений: 13

Так подключена. Если просто тег с событием onclick создать вручную, всё работает. А если генерировать элемент таким способом, то onclick просто не добавляется. Не пойму почему. Если пишу через href, как показывал выше, то работает, но только через хром. Вот весь код. Смысл вот в чём: есть массив; и скрипт должен на основе его содержимого создать и рассортировать по годам элементы массива. Скрипт используется здесь: shkolyar.my1.ru. Единственная проблема в том, что на генерируемые ссылки не удаётся повесить событие, которое будет сворачивать/разворачивать списки.
<div style="float: clear" id="leftmenu"></div>
<div id="paper">

<script type="text/javascript">
Shkolyar = new Array(
{"ID":"0", "Number":"01", "Text":"№1 (10 октября)", "Year":"2007", "Pages":"2"},
{"ID":"1", "Number":"02", "Text":"№2 (11 ноября)", "Year":"2007", "Pages":"4"},
{"ID":"2", "Number":"03", "Text":"№3 (25 декабря)", "Year":"2007", "Pages":"2"},
{"ID":"3", "Number":"04", "Text":"№4 (январь)", "Year":"2008", "Pages":"4"},
{"ID":"4", "Number":"05", "Text":"№5 (февраль)", "Year":"2008", "Pages":"4"},
{"ID":"5", "Number":"SV01", "Text":"СВ №1 (март)", "Year":"2008", "Pages":"2"},
{"ID":"6", "Number":"SV02", "Text":"СВ №2 (апрель)", "Year":"2008", "Pages":"4"},
{"ID":"7", "Number":"06-1", "Text":"№6-1 (октябрь)", "Year":"2008", "Pages":"4"},
{"ID":"8", "Number":"07-1", "Text":"№7-1 (ноябрь)", "Year":"2008", "Pages":"4"},
{"ID":"9", "Number":"08", "Text":"№8 (декабрь)", "Year":"2008", "Pages":"4"},
{"ID":"10", "Number":"09", "Text":"№9 (январь)", "Year":"2009", "Pages":"4"},
{"ID":"11", "Number":"10", "Text":"№10 (февраль)", "Year":"2009", "Pages":"4"},
{"ID":"12", "Number":"11", "Text":"№11 (март)", "Year":"2009", "Pages":"4"},
{"ID":"13", "Number":"12", "Text":"№12 (апрель)", "Year":"2009", "Pages":"4"},
{"ID":"14", "Number":"13", "Text":"№13 (9 мая)", "Year":"2009", "Pages":"4"},
{"ID":"15", "Number":"14", "Text":"№14 (май)", "Year":"2009", "Pages":"4"},
{"ID":"16", "Number":"15", "Text":"№15 (сентябрь)", "Year":"2009", "Pages":"4"},
{"ID":"17", "Number":"16", "Text":"№16 (октябрь)", "Year":"2009", "Pages":"4"},
{"ID":"18", "Number":"17", "Text":"№17 (ноябрь)", "Year":"2009", "Pages":"4"},
{"ID":"19", "Number":"18", "Text":"№18 (декабрь)", "Year":"2009", "Pages":"4"},
{"ID":"20", "Number":"19", "Text":"№19 (январь)", "Year":"2010", "Pages":"4"},
{"ID":"21", "Number":"20", "Text":"№20 (февраль)", "Year":"2010", "Pages":"4"},
{"ID":"22", "Number":"21", "Text":"№21 (март)", "Year":"2010", "Pages":"4"},
{"ID":"23", "Number":"22", "Text":"№22 (апрель)", "Year":"2010", "Pages":"4"},
{"ID":"24", "Number":"23", "Text":"№23 (9 мая)", "Year":"2010", "Pages":"4"},
{"ID":"25", "Number":"24", "Text":"№24 (май)", "Year":"2010", "Pages":"4"},
{"ID":"26", "Number":"27", "Text":"№27 (сентябрь)", "Year":"2010", "Pages":"4"},
{"ID":"27", "Number":"28", "Text":"№28 (октябрь)", "Year":"2010", "Pages":"4"},
{"ID":"28", "Number":"29", "Text":"№29 (ноябрь)", "Year":"2010", "Pages":"4"},
{"ID":"29", "Number":"30", "Text":"№30 (декабрь)", "Year":"2010", "Pages":"4"},
{"ID":"30", "Number":"31", "Text":"№31 (январь)", "Year":"2011", "Pages":"4"},
{"ID":"31", "Number":"32", "Text":"№32 (февр.-март)", "Year":"2011", "Pages":"4"},
{"ID":"32", "Number":"33", "Text":"№33 (апрель)", "Year":"2011", "Pages":"4"},
{"ID":"33", "Number":"34", "Text":"№34 (май)", "Year":"2011", "Pages":"4"},
{"ID":"34", "Number":"35", "Text":"№35 (сентябрь)", "Year":"2011", "Pages":"4"},
{"ID":"35", "Number":"36", "Text":"№36 (октябрь)", "Year":"2011", "Pages":"4"},
{"ID":"36", "Number":"37", "Text":"№37 (ноябрь)", "Year":"2011", "Pages":"4"},
{"ID":"37", "Number":"38", "Text":"№38 (декабрь)", "Year":"2011", "Pages":"4"},
{"ID":"38", "Number":"39", "Text":"№39 (март)", "Year":"2012", "Pages":"4"},
{"ID":"39", "Number":"40", "Text":"№40 (май)", "Year":"2012", "Pages":"4"},
{"ID":"40", "Number":"41", "Text":"№41 (сентябрь)", "Year":"2012", "Pages":"4"},
{"ID":"41", "Number":"42", "Text":"№42 (октябрь)", "Year":"2012", "Pages":"4"},
{"ID":"42", "Number":"43", "Text":"№43 (ноябрь)", "Year":"2012", "Pages":"4"},
{"ID":"43", "Number":"44", "Text":"№44 (январь)", "Year":"2013", "Pages":"4"},
{"ID":"44", "Number":"45", "Text":"№45 (март)", "Year":"2013", "Pages":"4"},
{"ID":"45", "Number":"SV03", "Text":"СВ №3 (апрель)", "Year":"2013", "Pages":"4"},
{"ID":"46", "Number":"46", "Text":"№46 (апрель)", "Year":"2013", "Pages":"4"},
{"ID":"47", "Number":"47", "Text":"№47 (9 мая)", "Year":"2013", "Pages":"4"},
{"ID":"48", "Number":"48", "Text":"№48 (сентябрь)", "Year":"2013", "Pages":"4"},
{"ID":"49", "Number":"49", "Text":"№49 (октябрь)", "Year":"2013", "Pages":"4"},
{"ID":"50", "Number":"50", "Text":"№50 (ноябрь)", "Year":"2013", "Pages":"4"},
{"ID":"51", "Number":"51", "Text":"№51 (январь)", "Year":"2014", "Pages":"4"},
{"ID":"52", "Number":"52", "Text":"№52 (февраль)", "Year":"2014", "Pages":"4"}
);

hash = top.location.href.split("#")[1];
if (!hash)
{
if ((Shkolyar.length-1) < 10) {
hash = ('0' + (Shkolyar.length-1));
} else {
hash = Shkolyar.length-1;
}
} else {
document.title = 'Выпуск газеты №' + Shkolyar[hash].Number + ' — $SITE_NAME$';
}

for (itemNumber = Shkolyar.length-1; itemNumber >= 0; itemNumber--)
{
if (!window['year'+Shkolyar[itemNumber].Year]) {

var yearItemLink = document.createElement('a');
yearItemLink.onclick = function() {
$('#year'+Shkolyar[itemNumber].Year).slideToggle('300');
};
yearItemLink.title = 'Номера газеты за '+(Shkolyar[itemNumber].Year)+' год';
yearItemLink.appendChild(document.createTextNode((Shkolyar[itemNumber].Year)+' год'));
leftmenu.appendChild(yearItemLink);

var yearList = document.createElement('div');
yearList.id = 'year'+(Shkolyar[itemNumber].Year);
if ((Shkolyar[itemNumber].Year) == (Shkolyar[hash].Year)) {
yearList.style.display = 'block';
}
yearList.className = 'yearlist';
leftmenu.appendChild(yearList);

document.getElementById('leftmenu').innerHTML += '<br />'
}

var paperLink = document.createElement('a');
paperLink.href = 'javascript:location.hash=\'#'+(Shkolyar[itemNumber].ID)+'\'; location.reload()';
paperLink.title = 'Школяр ' + Shkolyar[itemNumber].Text.slice(0, -1) + ', ' + Shkolyar[itemNumber].Year + ' год)';
if (itemNumber == hash) {
paperLink.style.paddingLeft = '20px';
paperLink.style.color = '#2573D5';
}
paperLink.appendChild(document.createTextNode(Shkolyar[itemNumber].Text));
window['year'+Shkolyar[itemNumber].Year].appendChild(paperLink);
}

for (listNumber = 1; (listNumber-1) < Shkolyar[hash].Pages; listNumber++)
{
var paperImage = document.createElement('img');
paperImage.id = 'paperimage';
paperImage.src = 'http://shkolyar.my1.ru/shkolyar/' + Shkolyar[hash].Number + '/' + listNumber + '.jpg';
paperImage.alt = 'Школяр ' + Shkolyar[hash].Text.slice(0, -1) + ', ' + Shkolyar[hash].Year + ' год), страница ' + listNumber;
paperImage.title = 'Школяр ' + Shkolyar[hash].Text.slice(0, -1) + ', ' + Shkolyar[hash].Year + ' год), страница ' + listNumber;
paperImage.width = '720';
paper.appendChild(paperImage);
}

var downloadLink = document.createElement('a');
downloadLink.id = 'downloadlink';
downloadLink.href = 'http://shkolyar.my1.ru/shkolyar/' + Shkolyar[hash].Number + '/' + Shkolyar[hash].Number + '.zip';
downloadLink.title = 'Скачать оригинал этого номера газеты'; 
var textLink = document.createTextNode('Скачать оригинал этого номера газеты');
downloadLink.appendChild(textLink);
paper.appendChild(downloadLink);
</script>
</div>
Ответить с цитированием
  #7 (permalink)  
Старый 06.03.2014, 15:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Павел Пичужкин,
строка 83 на сайте
yearItemLink.href = 'javascript:$(\'#year'+(Shkolyar[itemNumber].Year)+'\').slideToggle(\'300\'); return false';
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при обновлении страницы в IE8 JohnKM Internet Explorer 1 31.07.2012 11:18
Ошибка при добавлении обработчика к событию Riim Events/DOM/Window 32 19.01.2010 14:17
Не понимаю почему возникает ошибка при перетаскивании satels jQuery 4 10.01.2010 03:57
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
Добавление стилей к вновь созданному элементу alexeews Общие вопросы Javascript 4 29.09.2008 01:40