Centrum Skryptów - Systemy Operacyjne

W jaki sposób mogę pobrać tekst pola listy lub opcji pola rozwijanego? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

W jaki sposób mogę pobrać tekst pola listy lub opcji pola rozwijanego?

Cześć, Skrypciarzu! W jaki sposób mogę pobrać tekst pola listy lub opcji pola rozwijanego w aplikacji HTML?

-- Aneta

Cześć, Aneto. Być może kojarzysz taką starą piosenkę Maka Davisa, zaczynającą się tak:

 

Oh Lord it's hard to be humble

When you're perfect in every way



(Boże, jak trudno jest być skromnym,

Gdy jest się doskonałym pod każdym względem)

Przyznajemy, że nie jesteśmy doskonali pod każdym względem. Ale, odrzucając fałszywą skromność, stwierdzamy jako fakt, że pod jednym względem jesteśmy całkowicie doskonali. Otóż nasza pierwsza odpowiedź na każde pytanie o skrypty zawsze jest zła.

Twoje pytanie jest tego świetnym przykładem. Listę rozwijaną dodaje się do aplikacji HTML używając kodu takiego jak poniżej:

<select size="1" name="OptionChooser" onChange="TestSub">

    <option value="0"></option>

    <option value="1">Option 1</option>

    <option value="2">Option 2</option>

    <option value="3">Option 3</option>

</select>

Jak widzimy, nasza lista rozwijana zawiera kilka opcji (są to elementy wyświetlane w liście), a każda z opcjami unikalną wartość. Weźmy na przykład drugą z nich. Tekst wyświetlany w liście to Option 1, jednak wartość (czyli to, co zazwyczaj używane jest przez skrypt) równa jest 1. Wartość nie zawsze różni się od tekstu, jednak przeważnie tak jest, a niekiedy jest to konieczne. I tak, w liście witryn internetowych raczej wyświetlimy ich nazwy (np. Script Center), ale wartość musi być równa adresowi URL naszej witryny. Tak więc tekst i wartość muszą być różne.

Uwaga. Dla osób nie mających pojęcia, o czym mówimy: Aplikacje HTML (w skrócie HTA) umożliwiają dodanie do skryptu graficznego interfejsu użytkownika. Jeśli Was to ciekawi (a powinno – aplikacje HTML są bardzo fajne), poszukajcie dodatkowych informacji w centrum programistów HTA (j.ang.), a także w tym instruktażu (j.ang.) dotyczącym projektowania aplikacji HTML.

Ogólnie biorąc: fakt, że wartość jest inna niż tekst nie ma większego znaczenia, chyba że… na cóż, chyba że interesuje nas właśnie tekst jednej z opcji. Jak się do niego dobrać? Z początku stwierdziliśmy, że to niemożliwe, nawet za sto lat.

No cóż, jak mówiliśmy, jesteśmy w tym doskonali. Wkrótce okazało się jednak, że sposób istnieje, a oprócz tego, nie trzeba z listą rozwijaną robić nic niezwykłego. Wystarczy uzyskać dostęp do jej właściwości o nazwie InnerText. Oto krótka procedura, służąca do pobrania właściwości InnerText opcji listy rozwijanej, którą wybierze użytkownik (przykładową listę nazwaliśmy OptionChooser):

Sub TestSub

    For Each objOption in OptionChooser.Options

        If objOption.Selected Then

            Msgbox objOption.InnerText

        End If

    Next

End Sub

W celu dobranie się do potrzebnej wartości włączamy pętlę For Each przechodzącą przez kolekcję Options listy rozwijanej. (Jak się domyślacie, kolekcja Options składa się z wszystkich opcji listy rozwijanej.) Sprawdzamy w przypadku każdej z opcji, czy wartość Selected równa jest True; robi to poniższy wiersz kodu:

If objOption.Selected Then

Jeśli wartość Selected równa jest True, oznacza to, że jest to opcja wybrana przez użytkownika. Teraz używając poniższego wiersza wyświetlamy wartość właściwości InnerText w polu komunikatu:

Msgbox objOption.InnerText

Jeśli wartość Selected równa jest False, pętla po prostu przechodzi na następny element kolekcji i sprawdza jego wartość.

No cóż, nie da się ukryć, że to całkiem łatwe, mimo że z początku uznaliśmy to za niemożliwe. Jeśli chcecie to wypróbować, poniżej znajdziecie prostą, pokazową aplikację HTML. Należy skopiować kod, wkleić go do Notatnika i zapisać plik z rozszerzeniem .hta:

<html>

<head>

<title>HTA Test</title>

<HTA:APPLICATION 

     ID="objTest" 

     APPLICATIONNAME="HTATest"

     SCROLL="no"

     SINGLEINSTANCE="yes"

>

</head>



<SCRIPT LANGUAGE="VBScript">



    Sub TestSub

        For Each objOption in OptionChooser.Options

            If objOption.Selected Then

                Msgbox objOption.InnerText

            End If

        Next

    End Sub



</SCRIPT>



<body>



<select size="1" name="OptionChooser" onChange="TestSub">

    <option value="0"></option>

    <option value="1">Option 1</option>

    <option value="2">Option 2</option>

    <option value="3">Option 3</option>

</select>



</body>

No cóż, istotnie trudno jest być skromnym, będąc doskonałym. Ale z jakiegoś powodu Skrypciarze nie mają kłopotów ze skromnością...

 Do początku strony Do początku strony


Centrum Skryptów - Systemy Operacyjne