Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как получить названия цветов (https://javascript.ru/forum/misc/36572-kak-poluchit-nazvaniya-cvetov.html)

Dodik 20.03.2013 09:07

Как получить названия цветов
 
Здравствуйте, помогите пожалуйста, мне нужно получить названия цветов.

На странице такой код:

<div style="width:230px;margin-top:10px;">


<div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursor:pointer;background: url('/images/color/black.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_black',123701);" >

</div>


<div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursor:pointer;background: url('/images/color/blue.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_blue',123701);" >

</div>


Мне нужно в строчку вывести текстом - black, blue

В коде выделил необходимые части.

рони 20.03.2013 11:00

Dodik,
:cray:
<!DOCTYPE HTML>
<html>

    <head>
        <title>Untitled</title>
    </head>

    <body>
        <div style="width:230px;margin-top:10px;"></div>
        <div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursorointer;background: url('/images/color/black.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_black',123701);"></div>
        <div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursorointer;background: url('/images/color/blue.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_blue',123701);"></div>
        <script>
            var a = document.getElementsByTagName('div'),
                s = [];

            for (var i = 0; i < a.length; i++) {
                if (a[i].style.background) {
                    if (a[i].style.background.split(/\/|\./))
                        s.push(a[i].style.background.split(/\/|\./).splice(-2, 1))
                }

            }
            document.write(s)
        </script>
    </body>

</html>

rgl 20.03.2013 15:56

рони,
Вытаскивать один элемент из массива с помощью splice - это круто!
Это даже круче, чем slice(-2, -1)
Почему не запомнить результат сплита во временную переменную (и тогда заодно не придется сплитить дважды), а потом не взять нужный элемент по length-2 ?

rgl 20.03.2013 16:18

<!DOCTYPE HTML>
<html>

    <head>
        <title>Untitled</title>
    </head>

    <body>
        <div style="width:230px;margin-top:10px;"></div>
        <div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursorointer;background: url('/images/color/black.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_black',123701);"></div>
        <div style="width:19px;float:left; height:19px;margin-left:5px;margin-top:3px;cursorointer;background: url('/images/color/blue.gif');" onClick="getcolor('/catalog/img_loader/im/123701_man_blue',123701);"></div>
        <script>
            var a = document.getElementsByTagName('div'),
                s = [];

            for (var i = 0; i < a.length; i++) {
                if (a[i].style.background) {
                    var tmp = a[i].style.background.match( /url\s*\([^)]*?([a-z]*)\.gif/ );
                    // var tmp = a[i].style.background.match( /\b([a-z]*)\.gif/ ); // как вариант чуть попроще
                    if( tmp ) s.push( tmp[1] )
                }

            }
            document.write(s.join("<br>"))
        </script>
    </body>

</html>


Часовой пояс GMT +3, время: 06:23.