Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 21.01.2011, 11:24
Аватар для LostSenSS
Интересующийся
Отправить личное сообщение для LostSenSS Посмотреть профиль Найти все сообщения от LostSenSS
 
Регистрация: 19.01.2011
Сообщений: 14

Сообщение от x-yuri Посмотреть сообщение
<script>
var name = [1, 2, 3];
name[0] = 5;
alert(name[0]);
</script>
афигеть! ))
но от чего так?
у меня хром выводит 1цу, а лиса - 5.
по логике тут 5.
присваиваем элементу массива значение 5 потом выводим этот элемент.
от куда чертов хром берет 1цу непонятно
Ответить с цитированием
  #22 (permalink)  
Старый 21.01.2011, 12:29
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Сообщение от LostSenSS
браузеры все последние версии, правда под макосью, но не думаю, что это существенно.
по поводу document.имя элемента .src=ссылка чет не очень понял (
обращение к свойству src элемента не через id а через его свойство name
Ответить с цитированием
  #23 (permalink)  
Старый 21.01.2011, 13:13
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

да не при чем тут обращение через document.<имя элемента>, к тому же оно работает не для всех элементов

а причина в том, что глобальные переменные - свойства глобального объекта (упрощенно, см. ниже)
<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <script type="text/javascript">
        for( var k in window ){
            var v =   k == 'name'   ? eval(k)   : '';
            document.write(k+': '+v+'<br>');
            // document.write(k+': '+window[k]+'<br>');
        }
    </script>
</body>
</html>


ну и в дополнение объявление переменной через var и создание переменной без var - это не то же самое
<script>
var a = 1;   // создаем глобальную переменную
b = 2;   // создаем свойство в глобальном объекте (window)
alert( a );
alert( b );
alert( delete a );   // нельзя удалить глобальную переменную
alert( delete b );
try {
    alert( a );
} catch( e ){ alert(e); }
try {
    alert( b );
} catch( e ){ alert(e); }
</script>
Ответить с цитированием
  #24 (permalink)  
Старый 21.01.2011, 13:49
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

уже увидел на что все ему внимание обращали.я имел в виду конкретное свойство src
Ответить с цитированием
  #25 (permalink)  
Старый 21.01.2011, 14:00
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

кстати, второй пример - для общего развития. Лучше всегда создавать переменные с помощью var и никогда не удалять их Если нужно удалять, то для этого существуют ассоциативные массивы (объекты, в случае javascript)
Ответить с цитированием
  #26 (permalink)  
Старый 21.01.2011, 14:33
Аватар для LostSenSS
Интересующийся
Отправить личное сообщение для LostSenSS Посмотреть профиль Найти все сообщения от LostSenSS
 
Регистрация: 19.01.2011
Сообщений: 14

засунул все объявления внутрь функции и все везде заработало, спасибо
Ответить с цитированием
  #27 (permalink)  
Старый 21.01.2011, 16:47
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

вообще это делается как-то так (за исключением того, что я картинки по высоте ограничил, чтобы в окно просмотра поместились). В частности, первая картинка вставляется серверным скриптом, причем не обязательно первая по счету, а в зависимости от параметра в URL. Таким образом, поисковая система увидит все изображения и пользователь, в случае отключенного javascript или ошибок в скрипте, тоже увидит все изображения

p.s. а ты говорил, картинки нельзя вставить...
<!doctype html>
<html>
<head>   
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
    <style type="text/css">
        body {
            font-family: Constantia, "Lucida Bright", Lucidabright, "Lucida Serif", Lucida, "DejaVu Serif", "Bitstream Vera Serif", "Liberation Serif", Georgia, serif;
        }
        img{
            height: 100px;
        }
        a { 
            color: #36c;
            text-decoration: none;
        }
        a:hover {
            text-decoration: underline;
        }
        .throbber {
            position: absolute;
            visibility: hidden;
            background: #000;

            opacity: .3;
            filter: alpha(opacity=30);
            -ms-filter: "alpha(opacity=30)";
            -khtml-opacity: .30;
            -moz-opacity: .30;
        }
        .throbber-gif {
            background: url(http://upload.wikimedia.org/wikipedia/commons/d/d2/Spinning_wheel_throbber.gif) no-repeat center;
        }
        .disabled {
            color: #999;
            text-decoration: none;
        }
    </style>
    <script type="text/javascript">
        var prefix = 'http://javascript.ru/forum/attachment.php?';

        function qs( v ){
            return new QueryString(v);
        }

        var QueryString = new Class({
            initialize: function( v ){
                v = v || location.search;
                this._assoc =   typeOf(v) == 'string'
                    ? v.substr(1).split('&')
                        .toAssoc(function( v ){
                            var kv = v.split('=');
                            return {
                                'k': decodeURIComponent(kv[0]),
                                'v': decodeURIComponent(kv[1])
                            };
                        })
                    : v;
            },
            
            val: function( n, v ){
                if( arguments.length > 1 )
                    this._assoc[n] = v;
                return this._assoc[n];
            },
            
            unset: function( n ){
                delete this._assoc[n];
            },
            
            toAssoc: function(){
                return this._assoc;
            },
            
            toString: function(){
                return   '?'+
                    this._assoc
                        .map(function( v, k ){
                            return   encodeURIComponent(k)+'='+encodeURIComponent(this._assoc[k]);
                        })
                        .join('&');
            }
        });

        Function.implement({
            'of': function( o ){
                var f = this;
                return function(){
                    return f.apply(o, arguments);
                };
            }
        });

        Array.implement({
            'toAssoc': function( f ){
                var r = {};
                for( var i=0; i<this.length; i++ ){
                    var kv = f(this[i], i, this);
                    r[kv['k']] = kv['v'];
                }
                return r;
            }
        });

        Element.implement({
            'setCoordinates': function( coords ){
                this.setStyles({
                    'left': coords['left'],
                    'top': coords['top'],
                    'width': coords['width'],
                    'height': coords['height']
                });
                return this;
            }
        });

        var Img = new Class({
            initialize: function( images ){
                this._images = images;

                this._i = this._images.indexOf( qs().val('img') );
                if( this._i == -1 )
                    this._i = 0;

                this._throbber = new Element('div', {'class': 'throbber', 'html': '<div class="throbber-gif"></div>'})
                    .inject( document.body );

                this._forward = $('forward');
                this._backward = $('backward');

                this._forward.addEvents({
                    'click': this._next.of(this).pass(true),
                    'mousedown': function(){ return false; }
                });
                this._backward.addEvents({
                    'click': this._next.of(this).pass(false),
                    'mousedown': function(){ return false; }
                });
            },

            _next: function( next ){
                if( ! this._disabled() ){
                    this._disabled( true );
                    this._load( newI.of(this)() );
                }
                return false;

                function newI(){
                    var r = next ? this._i+1 : this._i-1;
                    r %= this._images.length;
                    if( r < 0 )
                        r = this._images.length-1;
                    return r;
                }
            },

            _load: function( i ){
                var img = $('img');
                this._showThrobber( true );
                img.onload = function(){
                    this._i = i;
                    this._disabled( false );
                    this._showThrobber( false );
                }.of(this)
                img.src = prefix+this._images[i];
            },

            _showThrobber: function( show ){
                this._throbberGif = this._throbberGif || $$('.throbber-gif')[0];
                if( show ){
                    var coords = $('img').getCoordinates();
                    this._throbber.setStyles({
                        'left': coords['left'],
                        'top': coords['top']
                    });
                    this._throbberGif.setStyles({
                        'width': coords['width'],
                        'height': coords['height']
                    });
                }
                this._throbber
                    .setStyles({'visibility':   show ? 'visible' : ''});
            },

            _disabled: function( disabled ){
                if( arguments.length ){
                    var f = disabled ? 'addClass' : 'removeClass';
                    this._forward[f]( 'disabled' );
                    this._backward[f]( 'disabled' );
                }
                return this._forward.hasClass('disabled');
            }
        });
    </script>
</head>
<body>   

    <a id="backward" href="http://javascript.ru/forum/attachment.php?attachmentid=664&stc=1&d=1295611491">backward</a>

    <a id="forward" href="http://javascript.ru/forum/attachment.php?attachmentid=663&stc=1&d=1295611491">forward</a>

    <br>

    <img id="img" src="http://javascript.ru/forum/attachment.php?attachmentid=662&stc=1&d=1295611491">


    <script type="text/javascript">
        var images = ['attachmentid=662&stc=1&d=1295614554', 'attachmentid=663&stc=1&d=1295614554', 'attachmentid=664&stc=1&d=1295614554'];
        new Img( images );
    </script>

</body>
</html>
Изображения:
Тип файла: jpg mainphoto1.jpg (58.7 Кб, 78 просмотров)
Тип файла: jpg mainphoto2.jpg (240.9 Кб, 39 просмотров)
Тип файла: jpg mainphoto3.jpg (33.7 Кб, 31 просмотров)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JS работает в Опере, Хроме и Сафари, и не работает в IE & Mozilla Aliena Javascript под браузер 5 04.12.2010 08:15
Не работает в хроме и ослике. kirys0 AJAX и COMET 4 08.09.2010 22:45
Странная работа в Хроме и Сафари Flake jQuery 1 08.09.2010 10:28