Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Добраться до свойств ссылки из обработчика, Почему свойства не определены? 
V
    Опции темы
Messenger
Дата 6.6.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



Цитата

Но я читал что он не примеим когда в функцию обработчик необходимо передавать параметры! Неужто параметр передаётся автоматом! Объсните пажалста 

По поводу аргументов:
Код

function getArgs(one, two)
{
  var t = "Arguments:<br>";
    for(var i = 0; i < arguments.length; i++)
      t += arguments[i] + "<br>";
    t += "The function arguments by name:<br>" + one + ", " + two + "<br>";
    return t;
}
function funcArgs()
{
  info.innerHTML = getArgs("one", "WWW", new Date(), 44, 55) + "<br>" + getArgs("two") + 
    "<br>" + getArgs();
    var refGetArgs = getArgs;
    info.innerHTML += refGetArgs("refGetArgs") + "<br>" + refGetArgs(new Date(), "a", "b");
}

Когда срабатывает onclick событие, то функция типа fireOnClick передаёт функций linkClick всё, что пологается (для ФФ одно, для ИЕ другое). Если ничего не передаётся, то аргументы функций равны null (т.е. undefined), arguments.length == 0.
new_link.onclick = linkClick(); // просто вызывает функцию и присваевает .onclick то, что возвращает linkClick.
А что, пример http://forum.vingrad.ru/index.php?showtopi...st&p=751907 не работает?

Да, функция linkClick должна быть в том же документе(окне), где и new_link.
Не видя всего кода сложно сказать что то больше, почему неработает. 
PM MAIL   Вверх
kaa
Дата 8.6.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Messenger, Не, неработает, опять треюует объект... Я правда убрал условие на проверку навигатора ибо отрабатываю тока на IE.
Щаз буду разбираться с вашим последним примером. 
PM MAIL   Вверх
Messenger
Дата 8.6.2006, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



kaa, зачем убирать проверку? Скопировал, записал в файл и запустил, всё.
Цитата

Да, функция linkClick должна быть в том же документе(окне), где и new_link.

Т.е. обработщик (linkClick) события (/new_link./onclick) должен быть в том же документе (window, frame) где и происходит событие (т.е. там, где находится new_link), иначе [window.]event обьект будет не доступен, так, как событие будет происходит в другом документе, нежели обрабатывается. Это пишу потому, что у тебя там с frame'ами намудрено.
Зделай минимальный пример, чтоб неработал, и покажи, тогда будеть можно сказать, что то более определённое. 
PM MAIL   Вверх
kaa
Дата 8.6.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Messenger, OK, Я выложк тогда фреймовую структуру и два фрейма - пятый с инфой и третий(это тот который вот неработает). Остальные всйравно пока пустые - недоделанные. Посмотри пожалста как время будет. 
PM MAIL   Вверх
Messenger
Дата 9.6.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



Цитата

Я выложк тогда фреймовую структуру и два фрейма 

Лично я видел только один фрейм.
Вот, что у меня получилось:
frame_update.html:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
<script language="javascript" type="text/javascript">
    onload=function(){setInterval("fUpdate()",3000);};
    var parent_window = window.parent;
    var frame_info = parent_window.frame5.document;
        
        function gbi(doc, name){return doc.getElementById(name);}// 
        
    function fUpdate()
    {
        //var m_update = frame_info.getElementById("AddDelUserNew");
                var add = gbi(frame_info, "add");
        //if(m_update.firstChild.nodeValue=="y")
                if(add.value == "y")
        {        
            /*var add_user = frame_info.getElementById("AddUser");
            if(add_user.hasChildNodes())
            {
                var child_amount = add_user.childNodes.length;
                for(var i=0; i<=child_amount-1; i++)
                {
                    if(add_user.childNodes[i].nodeType == 1)
                    {*/
                        //var temp = add_user.childNodes[i].firstChild.nodeValue;
                                                var temp = gbi(frame_info, "address").value;
                        //var m_f = add_user.childNodes[i].lastChild.firstChild.nodeValue;
                                                var m_f = gbi(frame_info, "gender").value;
                        //var tableNode = document.childNodes[0].childNodes[1].firstChild; // это у меня не работает.
                                                var tableNode = gbi(document, "theTable");
                        var new_tr = document.createElement("tr");
                        var new_td = document.createElement("td");
                        var new_td1 = document.createElement("td");
                        var new_tbody = document.createElement("tbody");
                        var new_img = document.createElement("img");
                        var new_link = document.createElement("a");
                        var new_text = document.createTextNode(temp);
                        
                        tableNode.appendChild(new_tbody);
                        tableNode.firstChild.appendChild(new_tr);
                        
                        tableNode.firstChild.lastChild.setAttribute("id",temp.concat("_str"));
                        
                        tableNode.firstChild.lastChild.appendChild(new_td);
                        tableNode.firstChild.lastChild.appendChild(new_td1);
                        var col1 = tableNode.firstChild.lastChild.firstChild;
                        var col2 = tableNode.firstChild.lastChild.lastChild;
                        col1.appendChild(new_img);
                        if(m_f=="m")
                        {
                            col1.firstChild.setAttribute("src","male.png");
                        }
                        else
                        {
                            col1.firstChild.setAttribute("src","female.png");
                        }
                        
                        col1.setAttribute("height","20");
                        
                        col1.setAttribute("width","20%");
                        
                        col2.setAttribute("width","80%");
                        col2.appendChild(new_link);
                        col2.firstChild.appendChild(new_text);
                        col2.firstChild.setAttribute("href","#");
                                                new_link.onclick=linkClick;
                    /*}
                }
                
            }*/
            /*var del_user = frame_info.getElementById("DelUser");
            if(del_user.hasChildNodes())
            {
                var child_amount = del_user.childNodes.length;
                for(var i=0; i<=child_amount-1; i++)
                {
                    if(del_user.childNodes[i].nodeType == 1)
                    {
                        var temp = del_user.childNodes[i].firstChild.nodeValue;
                                                                        var deleting_str = document.getElementById(temp);
                        var parent_node = deleting_str.parentNode;
                        parent_node.removeChild(deleting_str);                        
                    }    
                }
            }*/
            //m_update.firstChild.nodeValue="n";
                        add.value = "n";
        }else{}            
    }
    
    
    
    function linkClick(obj)
    {
        if(obj)// NN, FF
                {
                  alert(obj.target.innerHTML);
                    return;
                }// IE
        var addresat = event.srcElement.innerHTML;
        alert(addresat);
    }
    
</script>
    <title></title>
  </head>
  <body bgcolor="#FFFFFF" style="padding:0; margin:0;">
    <table id="theTable" border="1%" width="100%" style="padding:0; margin:0;"></table>
  </body>
</html>


frame_info.html:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html>
  <head>
    <title></title>
  </head>
  <body>
        <div id="AddDelUserNew">
          Add???<br>
            <input id="add" type="text" value="y" />
        </div>
        <div id="AddUser">Address<br>
            <input id="address" type="text" value="Cool Cat" /><br>Gender<br>
            <input id="gender" type="text" value="m" />
        </div>
  </body>
</html>

index.html:
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
  <head>
    <title></title>
  </head>
  <frameset cols="25%, *">
    <frame name="frame5" id="frame5" src="frame_info.html">
    <frame name="frameUpdate" id="frameUpdate" src="frame_update.html">
  </frameset>
</html>


И еще, повторюсь, без всего кода, трудно сказать, что там не работает. 
PM MAIL   Вверх
kaa
Дата 9.6.2006, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Чёрт,  умя чтобы эти прмеры понять образования нехватает...  smile  
PM MAIL   Вверх
kaa
Дата 9.6.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Чёрт,  умя чтобы эти прмеры понять образования нехватает...  smile 
Я начинаю уже в своём коде путаться...

А давайте разберём что-нить попроще. Вот допустим пример всей сути проблемы: создаётся ссылка и надо в обработчике вывести текст ссылки. 


Код

<html>
<head>
</head>

<script language="javascript">
function tt()
{
 m_link = document.createElement("a");
 m_text = document.createTextNode("LINK");
 m_link.appendChild(m_text);
 
 link_node = document.firstChild.childNodes[1].appendChild(m_link);
 link_node.setAttribute("href", "javascript:void(0)");
 link_node.onClick = linkClick;
 
 
 function linkClick()
 {
    alert(event.srcElement.innerHTML);
 }
  
}
</script>

<body onLoad="tt()">
</body>
</html>



Неработает кароче обработчик, не ругается и неработает.
Я думаю этот код и поменьше и попроще, а то я уже кипеть начинаю... smile  
PM MAIL   Вверх
Messenger
Дата 10.6.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



Код

  //link_node.onClick = linkClick;
  link_node.onclick = linkClick;

Как понимаеш, onClick это ведь не onclick. В html tag'ах можеш писать как удобнее (но и сдесь луче придерживатся стандарта), в ЯваСкрипте, как и в Ц/Ц++ надо следить за регистрами букв.  

Это сообщение отредактировал(а) Messenger - 10.6.2006, 10:10
PM MAIL   Вверх
kaa
Дата 10.6.2006, 13:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Messenger, А вот этого незнал! Спасибо, ща еще поколдую...  smile  
PM MAIL   Вверх
kaa
Дата 10.6.2006, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Messenger, СПАСИБА! всё заработало: и в упрощенном примере и в основном документе... smile 

Немного оффтопа: а где можно почитать более подробно про объект event, а то у меня три книги  и нигде про него нечего толкового не написано... Пишут тока что он создаётся и всё... Из-за отсутствия инфы по нему и погорел smile   

Это сообщение отредактировал(а) kaa - 10.6.2006, 14:06
PM MAIL   Вверх
Messenger
Дата 10.6.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 16.2.2006

Репутация: нет
Всего: 1



Справочная информация - http://forum.vingrad.ru/index.php?showtopi...st&p=686148
и пройдись в http://forum.vingrad.ru/index.php?showforum=10 по важным темам, а также ползуйся поиском в форуме.  smile  
PM MAIL   Вверх
kaa
Дата 10.6.2006, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 817
Регистрация: 5.11.2005

Репутация: 1
Всего: 2



Ага, спасибо еще раз 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.