2010-11-19 2 views
1

Мне нужна помощь в изменении функции, которая вызывается после загрузки страницы, и в любое время после того, как пользователь нажимает на определенный div с идентификатором. До сих пор у меня есть это:Вызов функции Javascript на странице как onload, так и onclick?

window.onload=function() { 
//Do your stuff, JS! 
} 

Да, я едва знаю любого JS ...

EDIT: Я буду включать мою функцию JS (я не сделал это сам, очевидно, еще один приятный и умнее человека did: P)

function() { 
    var maxHeight = 0; 
    //get the column containers 
    var colsA = document.getElementById("Content").childNodes; 

    //get the height of the tallest column 
    for(var i=0; i < colsA.length; i=i+1) { 
     if(colsA[i].clientHeight > maxHeight) maxHeight = colsA[i].clientHeight; 
    } 

//set all the column containers heights to maxHeight 
    for(var i=0; i < colsA.length; i=i+1) { 
     if(colsA[i].nodeType == 1) colsA[i].style.height = maxHeight+'px'; 
    } 
} 

Что он делает: у меня есть контейнер div, в котором находится x число столбцов div. Эти столбцы различаются по высоте из-за контента. Эта функция делает все высоты divs одинаковыми.

Когда моя страница загружается, этот код работает безупречно. Однако потом это не так. У меня есть разборные div, которые содержат дополнительную информацию, когда пользователь нажимает на нее, она будет увеличивать высоту. Вот почему я думал о onclick для этого id ... к сожалению, идентификатор динамически генерируется php.

ответ

7

Вы можете определить функцию по отдельности, а затем привязать его к несколько обработчиков событий:

function myHandler(){...} 
window.onload = myHandler; 
myElement.onclick= myHandler; 
... 
1

Это должно исправить:

function f() { 
    // do your stuff 
} 

window.onload = f; 
document.getElementById("myButton").onclick = f; 
+0

Что делать, если идентификатор элемента динамически генерируется? Я дал это выстрел ... но не работает. Я могу отредактировать свой пост с фактической функцией. – stockoverflow

+0

so myButton = CollapsiblePanel что-то вроде этого. – stockoverflow

+0

@stockoverflow: Ну, вам нужно как-то получить ссылку на элемент ... –

0

Другой способ:

window.onload=function() { 
//Do your stuff, JS! 
} 

yourElement.onclick = window.onload; 

В конец не имеет значения, как вы это делаете. Функции - это объекты первого класса, поэтому вам просто нужно иметь ссылку на функцию.


Чтобы узнать больше о JavaScript, посмотрите на MDC JavaScript Guide.

Смежные вопросы