JavaScript - DOM: კვანძების ძიების მეთოდები. Javascript და Jquery სელექტორები. ელემენტის შერჩევა ავტორიტეტის id-ით და დოკუმენტის ობიექტის ატრიბუტებით JavaScript-ში

DOM სტანდარტი გადასცემს უამრავ ფუნქციას ელემენტის ძიებაში. ეს მეთოდები getElementById, getElementsByTagName და getElementsByName.

უფრო მოწინავე გზები JavaScript ბიბლიოთეკების შესასწავლად.

მოძებნეთ ID-ით

თავად ხელით გზაგაარკვიეთ ელემენტი DOM-ში - დაალაგეთ იგი id-ის მიხედვით. რისთვისაც არის ვიკი დააწკაპუნეთ document.getElementById (id)

მაგალითად, შემდეგი კოდი არის ტექსტის ფერის შეცვლა შავზე div "e with id =" dataKeeper ":

Document.getElementById("dataKeeper"). Style.color = "ლურჯი"

ძიება ტეგის მიხედვით

შეურაცხმყოფელი მეთოდი არის ყველა ელემენტის ამოღება სიმღერის ტეგი, და მათ შორის იპოვე საჭიროები. ამისათვის გამოიყენეთ document.getElementsByTagName (ტეგი). ვონი აბრუნებს ელემენტების მასივს ასეთი ტეგის შესაქმნელად.

მაგალითად, შეგიძლიათ აირჩიოთ სხვა ელემენტი (მაივიში ნუმერაცია იწყება ნულიდან) li tag-ის ქვეშ:

Document.getElementsByTagName("LI")

ისე, getElementsByTagName შეიძლება ეწოდოს არა მხოლოდ დოკუმენტს, არამედ ნებისმიერ ელემენტს, რომელსაც აქვს ტეგი (არა ტექსტი).

ამ შემთხვევაში, მხოლოდ ის ობიექტები, რომლებიც ამ ელემენტის ქვეშ არიან, მოიძებნება.

მაგალითად, შემდეგი დაწკაპუნებით დაიბრუნებს LI ელემენტების სიას, რომლებიც ნაპოვნია პირველი div ტეგის შუაში:

Document.getElementsByTagName ("DIV"). GetElementsByTagName ("LI")

ამოიღეთ ყველა ბალიშები

დააწკაპუნეთ elem.getElementsByTagName-ზე ("*"), რათა შეცვალოთ ელემენტის კვანძის ყველა შვილის სია მათი გვერდის ავლით.

მაგალითად, ამ DOM-ზე:

ეს კოდი:

Var div = document.getElementById("d1") var elems = div.getElementsByTagName("*") for (var i = 0; i

თქვენ შეგიძლიათ ნახოთ თანმიმდევრობა: ol1, li1, li2.

ძებნა სახელით: getElementsByName

document.getElementsByName (სახელი) მეთოდი აბრუნებს ყველა ელემენტს, რომელთა სახელები (სახელის ატრიბუტი) უფრო ძველია ვიდრე ეს.

ის მუშაობს მხოლოდ იმ ელემენტებთან, რომელთათვისაც სახელის ატრიბუტი ცალსახად არის გადაცემული სპეციფიკაციაში: ფორმა, შეყვანა, a, აირჩიეთ, ტექსტური ტერიტორია და სხვა, უფრო იშვიათი.

document.getElementsByName მეთოდი არ მუშაობს სხვა ელემენტებთან, როგორიცაა div, p და ა.შ.

Სხვა საშუალებები

გამოიკვლიეთ DOM-ის ძიების სხვა გზები: XPath, cssQuery და ა.შ. როგორც წესი, მათ ახორციელებენ javascript ბიბლიოთეკები ბრაუზერების სტანდარტული შესაძლებლობების გასაფართოებლად.

ასევე არსებობს getElementsByClassName მეთოდი ელემენტების კლასის მიხედვით საძიებლად, მაგრამ ის საერთოდ არ მუშაობს IE-ში, ამიტომ მისი სუფთა გარეგნობით არავის აწუხებს.

ხშირი რემისია დაკავშირებულია ყოველდღიურ ცხოვრებასთან getElementById მეთოდის სახელით, ხოლო სხვა მეთოდებში არის ასო є: getElement Სახელით.

აქ წესი მარტივია: ერთი ელემენტი - ელემენტი, ბევრი - ელემენტი . ყველა მეთოდი * ელემენტი * გადაატრიალეთ კვანძების სია.


ბოლო გაკვეთილზე ჩვენ გადავხედეთ getElementsByTagName მეთოდს, რომელიც აბრუნებს მასივს ( ჯგუფი) გვერდითი ელემენტები ტეგის სახელზე.

აქ საუბარია javascript-თან პრაქტიკულ მუშაობაზე და გადავხედავთ getElementById მეთოდს, რომელიც აქცევს შეტყობინებას ელემენტად, ფოკუსირება თქვენს უნიკალურ იდენტიფიკატორზე.

getElementById მეთოდი მსგავსია დოკუმენტის ობიექტის getElementsByTagName მეთოდის.

მეთოდის სახელი ითარგმნება სიტყვასიტყვით: იპოვნეთ ელემენტი ID-ით.

ნებისმიერი ელემენტი ( ტეგუ) ვებ დოკუმენტს შეიძლება მიენიჭოს საკუთარი ID - იდენტიფიკატორი, იმისდა მიხედვით თუ ვინ ელემენტი გახდეს უნიკალურიმანამდე კი შეგიძლიათ უარყოთ წვდომა თავად რობოტზე.

ყურადღების მიქცევაე: მეთოდის სახელში სიტყვა ელემენტის ბოლოს არ არის ასო s ( ანგარიშზე getElementsByTagName მეთოდის მეშვეობით). ეს იშლება სიცხადისთვის და იმ მეთოდებზე სასაუბროდ, რომლებიც ელემენტის არჩევას ემსახურება.

ცოტა მეტი ახსნა კოდის ფრაგმენტისთვის...

  • img ტეგი ( გამოსახულებავ) id - პინგვინის იდენტიფიკატორი;
  • დამატებითი მეთოდისთვის getElementById, თავად img ტეგი არჩეულია პინგვინის იდენტიფიკატორისთვის;
  • ზამთარში უნიკალური გაიტაცესშეხვედრის ტეგზე;
  • შემდეგ შეგიძლიათ ივაჭროთ ტეგით, როგორც ობიექტთან ერთად ცვლილების გზითუნიკალური, ისევე, როგორც ჩვენ ვმუშაობდით Date ობიექტთან საკმაოდ ცვლილებით.

ელემენტზე წვდომის შემდეგ ( ტეგუ) ვებ გვერდები id-ით - დამატებითი getElementById მეთოდის იდენტიფიკატორი, ჩვენ მასთან ვმუშაობთ როგორც ობიექტთან, რაც ნიშნავს, რომ შეგვიძლია უარვყოთ წვდომა ტეგის ატრიბუტებზე, როგორც ობიექტის ავტორიტეტებთან.

ისე, ატრიბუტების მნიშვნელობა ასევე არის ძალაუფლების მნიშვნელობა.

განაგრძეთ ვარჯიში წინა კონდახით...

"მოჯადოებული პინგვინი">

კონდახის კოდის ახსნა...

  • img ტეგი ( გამოსახულებავ) აქვს შემდეგი ატრიბუტები: src - ფაილის მისამართები, სიგანე და სიმაღლე - გამოსახულების სიგანე და სიმაღლე, alt - ალტერნატიული ტექსტი;
  • ტეგზე წვდომის უარყოფით დამატებითი getElementById მეთოდის გამოყენებით, რაც შეეხება ობიექტს, ჩვენ უარვყოფთ ტეგის ატრიბუტებზე წვდომას, რამდენადაც ობიექტის ავტორიტეტები;
  • ატრიბუტის მნიშვნელობებიახლა უკვე ხელისუფლების მნიშვნელობა;
  • ჯავასკრიპტში, ობიექტის ავტორიტეტებზე წვდომა მიიღწევა წერტილის საშუალებით. შემდეგ გამოჩნდება alt - ეკრანზე გაფრთხილების მეთოდის გარდა img ტეგის ალტერნატიული ტექსტი.

იმედია არანაირად არ დაიკარგები. აუცილებელია დაუყოვნებლივ გაიგოთ რა ხდება Javascript დონეზე და დოკუმენტის განლაგების დონეზე.

img tag - ეს ობიექტი უნიკალურია;

ტეგის სიგანე და alt ატრიბუტები არის ობიექტის ძალა;

ატრიბუტების მნიშვნელობები "128" და "მოჯადოებული პინგვინი"- ავტორიტეტების მნიშვნელობა;

// ღერძი, როგორც ჩანს Javascript პოზიციიდან:

var უნიკალური = (

სიგანე: "128",

alt: "მოჯადოებული პინგვინი"

}

ამას აკეთებს getElementById მეთოდი, რომელიც აბრუნებს ინფორმაციას ნებისმიერ ელემენტს ( ტეგი) ვებ გვერდები, რომლებსაც აქვთ უნიკალური იდენტიფიკატორის ID. შემდგომი მუშაობა ამ ელემენტთან javascript-ის დონეზე განხორციელდება უკვე ობიექტთან...

სრიალეთ უკან: როგორც წინა გაკვეთილზე, აქაც - getElementById მეთოდთან მუშაობისას, სკრიპტის დაწკაპუნების მწკრივი უნდა განთავსდეს HTML დოკუმენტის ბოლოს.

jQuery-ს აქვს სხვადასხვა ვარიანტები ვებ დოკუმენტში ელემენტების არჩევისთვის.

გარდა ამისა, ვებ გვერდებზე შეგიძლიათ აირჩიოთ ელემენტები მათი id-ით, ჩვენ ასევე შეგვიძლია შევარჩიოთ ელემენტები კლასის ატრიბუტით.

ტერიტორია ახლა კიდევ უფრო ფართოა. როცა საკუთარ სცენარებს ვწერ, ძალიან ხშირად მიწევს ამ სელექტორის გამოყენება.

დავუშვათ, რომ გვერდზე გვაქვს შესაბამისი კოდი.

ბლოკის ნაცვლად.

ამოცანა მარტივია, თქვენ უბრალოდ უნდა აირჩიოთ ელემენტი კლასის კლასით = "elem" და გააკეთოთ ყველაფერი, რაც შეგიძლიათ, Javascript-ის გამოყენებით.

მოდით შევხედოთ რამდენიმე ვარიანტს, რათა ნახოთ, თუ როგორ შეგიძლიათ მიიღოთ ისინი.

ვარიანტი 1. გამოიყენეთ Javascript getElementsByClassName მეთოდი.

თუ არ იყენებთ დამატებით ბიბლიოთეკებს, შეგიძლიათ ელემენტამდე მიხვიდეთ getElementsByClassName ("class_name") მეთოდის გამოყენებით.

მაგალითად, გამომავალი კოდის დაწყებამდე შეგიძლიათ კოდს შემდეგი მწკრივი დაამატოთ.

ბლოკის ნაცვლად.

მას შემდეგ რაც ყველაფერი სწორად იმუშავებს, ჩვენ ვშლით ამომხტარ ფანჯარას, რომელშიც ნაჩვენები იქნება ტექსტი, რომელიც მდებარეობს div ბლოკის შუაში.

გაითვალისწინეთ, რომ getElementsByClassName მეთოდის გამოსვლის შედეგი იქნება ელემენტებისა და ელემენტების მასივი იმავე კლასის გვერდზე.

document.getElementsByClassName ("elem") კონსტრუქციის ბოლოს, თქვენ უნდა მიუთითოთ, რომ მასივის () null ელემენტი დაბრუნდება. რახუნოკი ჯავასკრიპტში ნულიდან იწყება და არა ერთიდან.

getElementsByClassName მეთოდის გამოყენების პრობლემა ის არის, რომ ეს მეთოდი არ არის მხარდაჭერილი ბრაუზერების ძველ ვერსიებში.

არის რამდენიმე სახიფათო რამ, რომლის გვერდის ავლითაც შეიძლება, და ეს არის სახიფათო კოდი. მაგალითად, შეგიძლიათ სწრაფად გამოიყენოთ რეგულარული გამონათქვამები:

თუ (document.getElementsByClassName == განუსაზღვრელი) (document.getElementsByClassName = ფუნქცია (cl) (var retnode =; var myclass = new RegExp("\\b" + cl + "\\b"); var elem = this.getElementsByTagName ("*"); for (var i = 0; i< elem.length; i++) { var classes = elem[i].className; if (myclass.test(classes)) { retnode.push(elem[i]); } } return retnode; } };

ეს არის პრობლემის გადაჭრის ერთ-ერთი გზა. მაგრამ, გულწრფელად რომ ვთქვათ, ჩემთვის არც თუ ისე სასიამოვნოა მხარის დაფარვა ლამაზი კოდით, ამიტომ ყველაზე ხშირად ვჩივი პრობლემის სხვა ვერსიაზე.

ვარიანტი 2. გამოიყენეთ Jquery ბიბლიოთეკა.

Jquery ბიბლიოთეკა ბევრად აადვილებს ელემენტების კლასის ატრიბუტის მიხედვით შერჩევის პრობლემის გადაჭრას. აუცილებელია დიზაინის დაჩქარება:

$(".elem")

აქ elem არის ელემენტისთვის მინიჭებული კლასის სახელი.

უნდა გვახსოვდეს, რომ იმისათვის, რომ ეს იმუშაოს, ჯერ უნდა იყოს დაკავშირებული Jquery ბიბლიოთეკა. ხელმისაწვდომია განყოფილებაში ამის გაკეთების ერთ-ერთი გზაა კოდში შემდეგი რიგის დამატება:

იმისათვის, რომ ბიბლიოთეკამ შეძლოს მისი გამოყენება, თქვენ უნდა დაუკავშირდეთ ინტერნეტს.

ვნახოთ, როგორ მუშაობს პრაქტიკაში.

ბლოკის ნაცვლად.

თავად სკრიპტი, როგორც წინა მაგალითში, პასუხისმგებელია იმ ელემენტის კოდზე, რომელთანაც გსურთ ურთიერთობა.

ამრიგად, არსებობს ორი გზა, რომლითაც შეგიძლიათ ურთიერთქმედება ელემენტებთან, რომლებსაც აქვთ კლასის ატრიბუტი დაინსტალირებული. აირჩიე ის, რაც ყველაზე მეტად ჯდება და ივარჯიშე პრაქტიკაში.

პრობლემა, რომელიც უკვე ხშირად აწყდება javascript დეველოპერებს, არის ელემენტის შერჩევა ვებ გვერდზე მისი id ატრიბუტისთვის.

დავუშვათ, რომ ჩვენ გვაქვს კოდი გვერდზე.

ბლოკის ნაცვლად.

როგორ შეგიძლიათ აირჩიოთ ელემენტი id = "elem"-ით და განახორციელოთ მოქმედებების სერია მასთან?

აქ არის რამდენიმე ვარიანტი ყველაზე სერიოზული პრობლემის მოსაგვარებლად. მოდით შევხედოთ მათ ახლა.

ვარიანტი 1. გამოიყენეთ Javascript getElementById მეთოდი.

ეს არის ელემენტზე ნავიგაციის გზა მისი id-ით „სუფთა“ javascript კოდის გამოყენებით, მესამე მხარის ბიბლიოთეკების გამოყენების გარეშე. ეს მეთოდი მსგავსია მეთოდის ggetElementById („element_id“). ამ გზით, ჩვენ ვმუშაობთ მანამ, სანამ არ მივაღწევთ საჭირო ელემენტს ჩვენი id-ის მიხედვით.

მოდით გავაკვირვოთ, თუ როგორ მუშაობს ეს მარტივი მაგალითით.

ბლოკის ნაცვლად.

გთხოვთ გაითვალისწინოთ, რომ კოდის ეს მწკრივი (სკრიპტი) მდებარეობს თავად ელემენტის ქვემოთ. ეს არის ამ სკრიპტის ნამუშევარი, რადგან Javascript კოდი შედის ინტერესთა სამყაროში. თუ კოდს კიდევ გავაფართოვებთ, მაშინ დავუბრუნდებით იმ გვერდზე არსებულ ელემენტს, რომელიც ჯერ არ არის ხელმისაწვდომი, რათა ის არ იყოს კოდში სკრიპტის გამოშვების დროს. არსებობს გზები, რომლითაც ადამიანი შეიძლება იყოს უნიკალური, მაგრამ არ გასცდეს ამ სტატიის ფარგლებს.

ჩანთაში, თუ ყველაფერი სწორად მუშაობს, ჩვენ ვხსნით გაჟონვის ფანჯარას. რომელ ფანჯარაში გამოჩნდება ტექსტი, რომელიც გამოჩნდება div ბლოკის შუაში.

ახლა ვნახოთ, როგორ შეიძლება ამ პრობლემის გადაჭრა სხვაგვარად.

ვარიანტი 2. გამოიყენეთ Jquery ბიბლიოთეკა.

ელემენტის id-ით არჩევის კიდევ ერთი ვარიანტია Jquery ბიბლიოთეკა. პრაქტიკაში, მიმდინარე სკრიპტებში, ყველაზე გავრცელებულია ამ გზით მოგების მიღება. ის უფრო გასაგები და ადვილად დასამახსოვრებელია.

იმისათვის, რომ ელემენტზე გადახვიდეთ მისი ID-ით, თქვენ სწრაფად უნდა გამოიყენოთ შემდეგი კონსტრუქცია:

$ ("#elem")

აქ elem არის სახელი, რომელიც შედის id ატრიბუტში.

ვინაიდან ჩვენ გამოვიყენებთ მესამე მხარის Javascript ბიბლიოთეკას სახელწოდებით Jquery, ეს ბიბლიოთეკა დაუყოვნებლივ უნდა იყოს დაკავშირებული.

ხელმისაწვდომია განყოფილებაში ამის გაკეთების ერთ-ერთი გზაა კოდში შემდეგი რიგის დამატება:

იმისათვის, რომ ბიბლიოთეკამ შეძლოს მისი გამოყენება, თქვენ უნდა დაუკავშირდეთ ინტერნეტს.

ბლოკის ნაცვლად.

თავად სკრიპტი, როგორც წინა მაგალითში, პასუხისმგებელია იმ ელემენტის კოდზე, რომელთანაც გსურთ ურთიერთობა.

ამრიგად, ჩვენ განვიხილეთ ორი გზა, რომლითაც შეგიძლიათ აირჩიოთ ელემენტი ვებ გვერდზე მისი id ატრიბუტისთვის და მასთან ურთიერთობა. აირჩიეთ თქვენთვის შესაფერისი მეთოდი და ივარჯიშეთ პრაქტიკაში.

ბოლო განახლება: 11/1/2015

JavaScript-ში DOM სტრუქტურასთან სამუშაოდ, დოკუმენტის ობიექტი გამოიყენება როგორც მნიშვნელობა გლობალური ფანჯრის ობიექტში. დოკუმენტის ობიექტი უზრუნველყოფს უამრავ უფლებამოსილებას და მეთოდს გვერდის ელემენტების მართვისთვის.

ელემენტების ძიება

ვებსაიტზე ელემენტების მოსაძებნად გამოიყენეთ შემდეგი მეთოდები:

    getElementById (მნიშვნელობა): ირჩევს ელემენტს, რომლის id ატრიბუტი უდრის მნიშვნელობას

    getElementsByTagName (მნიშვნელობა): ირჩევს ყველა ელემენტს, რომელთა ტეგს აქვს იგივე მნიშვნელობა

    getElementsByClassName (მნიშვნელობა): ირჩევს ყველა ელემენტს, რომელსაც აქვს კლასის მნიშვნელობა

    querySelector (მნიშვნელობა): ირჩევს პირველ ელემენტს, რომელიც ემთხვევა CSS სელექტორის მნიშვნელობას

    querySelectorAll (მნიშვნელობა): ირჩევს ყველა ელემენტს, რომელიც ემთხვევა CSS სელექტორის მნიშვნელობას

მაგალითად, ჩვენ ვიცით ელემენტი id-ით:

დამატებითი დახმარებისთვის document.getElementById ("header") გამოიყენება ელემენტის საპოვნელად, რომლის id = "header". და innerText-ის დამატებითი ძალით, შეგიძლიათ მოიძიოთ ნაპოვნი ელემენტის ტექსტი.

მოძებნეთ სიმღერის ტეგი:

სათაური

პირველი აბზაცი

კიდევ ერთი აბზაცი

დამატებითი დაწკაპუნების გამოყენებით document.getElementsByTagName ("p") შეგიძლიათ იპოვოთ აბზაცის ყველა ელემენტი. ეს დაწკაპუნება აბრუნებს ნაპოვნი ელემენტების მასივს. მასივის სხვადასხვა ელემენტების შესარჩევად აუცილებელია მათი მარყუჟის გავლა.

თუ ჩვენ გვჭირდება მხოლოდ პირველი ელემენტის ამოღება, ჩვენ შეგვიძლია შევარჩიოთ ნაპოვნი ობიექტების კოლექციის პირველი ელემენტი:

Var pElement = document.getElementsByTagName("p"); document.write("აბზაცის ტექსტი:" + pElement.innerText);

ელემენტის შერჩევა კლასის მიხედვით:

სტატიის სათაური

პირველი აბზაცი

კიდევ ერთი აბზაცი

აირჩიეთ css ამორჩევით:

სტატიის რეზიუმე

პირველი აბზაცი

კიდევ ერთი აბზაცი

დოკუმენტი.querySelector(".Annotation p") პროგრამა შეიცნობს ელემენტს, რომელიც ემთხვევა სელექტორს.annotation p. თუ მხარეს არის რამდენიმე ელემენტი, რომლებიც მსგავსია სელექტორის მსგავსი, მაშინ მათგან აირჩიეთ პირველი მეთოდი. შედეგად, ბრაუზერი აჩვენებს:

სტატიის რეზიუმე პირველი პუნქტი სხვა აბზაცი ამომრჩეველი ტექსტი: სტატიის რეზიუმე

ამომრჩეველთა მიერ ყველა ელემენტის შესარჩევად, შეგიძლიათ გამოიყენოთ document.querySelectorAll მეთოდი ანალოგიურად, რომელიც აბრუნებს ნაპოვნი ელემენტების მასივს:

სტატიის რეზიუმე

პირველი აბზაცი

კიდევ ერთი აბზაცი

ბრაუზერის შეჯამება:

სტატიის რეზიუმე პირველი აბზაცი სხვა აბზაცი ამომრჩეველი ტექსტი 0: პირველი აბზაცი ამომრჩეველი ტექსტი 1: სხვა აბზაცი