Autor Zpráva
Strongmann
Profil
Dobrý den,
prosím o pomoc sem s js začátečník respektive totální amatér. Nejdříve tedy můj kód:
<script type='text/javascript'>

function func1(){ 
var img1 = document.getElementById('menu-box');  


function translate( elem, x, y ) {
    var left1 = parseInt( css( elem, 'left' ), 10 ),
        top1 = parseInt( css( elem, 'top' ), 10 ),
        dx1 = left1 - x,
        dy1 = top1 - y,
        i1 = 1,
        count1 = 50,
        delay1 = 20;
    
    function loop() {
        if ( i1 >= count1 ) { return; }
        i1 += 1;
        elem.style.left = ( left1 - ( dx1 * i1 / count1 ) ).toFixed( 0 ) + 'px';
        elem.style.top = ( top1 - ( dy1 * i1 / count1 ) ).toFixed( 0 ) + 'px';
        setTimeout( loop, delay1 );
         
    }
    
    loop();
}

function css( element1, property1 ) {
    return window.getComputedStyle( element1, null ).getPropertyValue( property1 );
}

window.onclick = function ( e ) {
    var arr;
    
    if ( e.target.nodeName === 'A' ) {
        arr = e.target.title.split( ' ' );
        translate( img1, +arr[0], +arr[1] );        
    }
};
} 
</script>
<script type='text/javascript'>
function func2(){ 
var img = document.getElementById('logo_align');  


function translate( elem, x, y ) {
    var left = parseInt( css( elem, 'left' ), 10 ),
        top = parseInt( css( elem, 'top' ), 10 ),
        dx = left - x,
        dy = top - y,
        i = 1,
        count = 50,
        delay = 20;
    
    function loop() {
        if ( i >= count ) { return; }
        i += 1;
        elem.style.left = ( left - ( dx * i / count ) ).toFixed( 0 ) + 'px';
        elem.style.top = ( top - ( dy * i / count ) ).toFixed( 0 ) + 'px';
        setTimeout( loop, delay );
         
    }
    
    loop();
}

function css( element, property ) {
    return window.getComputedStyle( element, null ).getPropertyValue( property );
}

window.onclick = function ( e ) {
    var arr;
    
    if ( e.target.nodeName === 'A' ) {
        arr = e.target.title.split( ' ' );
        translate( img, +arr[0], +arr[1] );        
    }
};
} 
</script>
V html to potom vypadá takto:
<li class="first"><a  onclick="func1(),func2();" title="0 80" >O NÁS</a></li> 

Jde mi o to aby při prokliku na jeden odkaz se anymovalo více divů naráz. Bohužel nyní se spustí jen druhá funkce . Prosím jak udělat s těch dvou funkcí jednu a vůbec jak udělat aby kód byl funkční? Za jakékoli rady budu velice vděčný a předem děkuji!
Someone
Profil
Kód jsem nestudoval, ale co zkusit:
<li class="first"><a  onclick="func1();func2();" title="0 80" >O NÁS</a></li>
Storngmann
Profil *
Výsledek je to, že se pustí jen druhá funkce. :(
pako
Profil *
v kazdej funkcii mas priradenu obsluhu udalosti click na window cez window.onclick a takuto obsluhu mozes mat pre kazdy element na stranke len raz
pouzi addEventListener/attachEvent
peta
Profil
jinymi slovy
window.onclick = 123; // funkce 1
window.onclick = 456; // funkce 2
bude tam 456, protoze funkci 2 jsi hodnotu promenne prepsal

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0