Javascript.RU

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

Функция которая работает на OnLoad не хочет работать на OnClick
Здравствуйте! Помогите пожалуйста
Есть функция, которая создает элемент,
когда я вызываю ее так:
<body onload="createElement('div',
              {'class': 'myDivCSSClass', 'id': 'myDivId','align':'center', 'onClick': 'SendChange(this.id)'},
              {'width': '200px', 'height': '250px', 'background': '#3B9D00', 'color': '#fff'},
              'here is my text',
              'test',
              'before',
              1);">

то она работает нормально, элемент создается, и даже выполняется функция SendChange

При таком вызове:
<button onClick="createElement('div',
              {'class': 'myDivCSSClass', 'id': 'myDivId','align':'center', 'onClick': 'SendChange(this.id)'},
              {'width': '200px', 'height': '250px', 'background': '#3B9D00', 'color': '#fff'},
              'here is my text',
              'test',
              'before',
              1);">djdjdjjd</button>

ноль эмоций вообще!

Как это понимать? Может кто то сталкивался, плиз Хелп!!
Если это имеет значение, то проверяется все на Гугл Хроме
Ответить с цитированием
  #2 (permalink)  
Старый 23.03.2010, 00:19
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Код функции createElement покажите.
Ответить с цитированием
  #3 (permalink)  
Старый 23.03.2010, 00:20
Аспирант
Отправить личное сообщение для libinstyle Посмотреть профиль Найти все сообщения от libinstyle
 
Регистрация: 23.03.2010
Сообщений: 54

Вот он
function createElement(name, attrs, style, text,past_id,position,changed) {
    var parent = document.getElementsByTagName('BODY')[0];
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
        e.appendChild(document.createTextNode(text));
    }
    parent.appendChild(e);
    if(past_id){
          var old_elem = document.getElementById(past_id);
        if(position=='before'){            
            parent.insertBefore(e,old_elem)
        }else if(position=='after'){
            insertAfter(parent,e,old_elem);
        }
        if(changed!='' && changed==true){
            parent.removeChild(old_elem);
        }
    }
}
Ответить с цитированием
  #4 (permalink)  
Старый 23.03.2010, 00:34
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Придется переименовать функцию.

<button onclick="alert(createElement)">Test</button>

Результат:
function createElement() {
    [native code]
}
Там срабатывает with и createElement находится раньше, в document, а не window, поэтому вызывается совсем не та функция.

Последний раз редактировалось Octane, 23.03.2010 в 00:37.
Ответить с цитированием
  #5 (permalink)  
Старый 23.03.2010, 00:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Вот тут объясняли, почему так: Маленький тест ("конфлик" имён)
Ответить с цитированием
  #6 (permalink)  
Старый 23.03.2010, 00:41
Аспирант
Отправить личное сообщение для libinstyle Посмотреть профиль Найти все сообщения от libinstyle
 
Регистрация: 23.03.2010
Сообщений: 54

Ок! Спасибо, все получилось! CreateElem() значит будит
Ответить с цитированием
  #7 (permalink)  
Старый 23.03.2010, 00:42
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 09.07.2008
Сообщений: 3,873

Хотя можно window.createElement, но лучше переименовать, чтобы не было путаницы.
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
onclick не работает в Mozilla albushi Firefox/Mozilla 1 05.11.2009 11:11
Почему не работает функция? Vitaly jQuery 10 31.07.2009 16:01
GetElementById не хочет работать в динамической форме Игорёk Events/DOM/Window 8 23.06.2009 12:27
Не работает onClick добавление тега <s> AvaGet Общие вопросы Javascript 13 09.12.2008 17:41
Не работает функция Destrifer Элементы интерфейса 8 07.12.2008 00:34