JavaScript ve HTML

JavaScript ve HTML

Bu makale JavaScript ve HTML'yi açıklar.

YouTube Video

javascript-html-dom.html
  1<!DOCTYPE html>
  2<html lang="en">
  3<head>
  4  <meta charset="UTF-8">
  5  <title>JavaScript &amp; HTML</title>
  6  <style>
  7    * {
  8      box-sizing: border-box;
  9    }
 10
 11    body {
 12      margin: 0;
 13      padding: 2em;
 14      font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
 15      background-color: #f7f9fc;
 16      color: #333;
 17      line-height: 1.6;
 18    }
 19
 20    .container {
 21      max-width: 800px;
 22      margin: 0 auto;
 23      padding: 1em;
 24      background-color: #ffffff;
 25      border: 1px solid #ccc;
 26      border-radius: 10px;
 27      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05);
 28    }
 29
 30    h1, h2 {
 31      font-size: 1.5rem;
 32      color: #007bff;
 33      margin-top: 0.5em;
 34      margin-bottom: 0.5em;
 35      border-left: 5px solid #007bff;
 36      padding-left: 0.6em;
 37      background-color: #e9f2ff;
 38    }
 39
 40    button {
 41      display: block;
 42      margin: 1em auto;
 43      padding: 0.75em 1.5em;
 44      font-size: 1rem;
 45      background-color: #007bff;
 46      color: white;
 47      border: none;
 48      border-radius: 6px;
 49      cursor: pointer;
 50      transition: background-color 0.3s ease;
 51    }
 52
 53    button:hover {
 54      background-color: #0056b3;
 55    }
 56
 57    #output {
 58      margin-top: 1em;
 59      background-color: #1e1e1e;
 60      color: #0f0;
 61      padding: 1em;
 62      border-radius: 8px;
 63      min-height: 200px;
 64      font-family: Consolas, monospace;
 65      font-size: 0.95rem;
 66      overflow-y: auto;
 67      white-space: pre-wrap;
 68    }
 69
 70    .highlight {
 71      outline: 3px solid #ffc107; /* yellow border */
 72      background-color: #fff8e1;  /* soft yellow background */
 73      transition: background-color 0.3s ease, outline 0.3s ease;
 74    }
 75
 76    .active {
 77      background-color: #28a745; /* green background */
 78      color: #fff;
 79      box-shadow: 0 0 10px rgba(40, 167, 69, 0.5);
 80      transition: background-color 0.3s ease, box-shadow 0.3s ease;
 81    }
 82  </style>
 83</head>
 84<body>
 85  <div class="container">
 86    <h1>JavaScript Console</h1>
 87    <button id="executeBtn">Execute</button>
 88    <div id="output"></div>
 89  </div>
 90
 91  <div class="container">
 92    <h2>HTML Sample</h2>
 93    <div id="content">Hello, World!</div>
 94    <button id="changeText">Change Text</button>
 95  </div>
 96
 97  <script>
 98    // Override console.log to display messages in the #output element
 99    (function () {
100      const originalLog = console.log;
101      console.log = function (...args) {
102        originalLog.apply(console, args);
103        const output = document.getElementById('output');
104        output.textContent += args.map(String).join(' ') + '\n';
105      };
106    })();
107
108    document.getElementById('executeBtn').addEventListener('click', () => {
109      // Prevent multiple loads
110      if (document.getElementById('externalScript')) return;
111
112      const script = document.createElement('script');
113      script.src = 'javascript-html-dom.js';
114      script.id = 'externalScript';
115      //script.onload = () => console.log('javascript-html-dom.js loaded and executed.');
116      //script.onerror = () => console.log('Failed to load javascript-html-dom.js.');
117      document.body.appendChild(script);
118    });
119  </script>
120</body>
121</html>

JavaScript'teki window Nesnesi

window nesnesi JavaScript'te tarayıcı ortamındaki global nesnedir ve web sayfası ile tarayıcı penceresiyle ilgili işlevler ve bilgiler sağlar. window, tarayıcının global kapsamı olduğundan, tarayıcıda çalışan tüm JavaScript kodu window nesnesinin bir parçası olur. window nesnesi, tarayıcı ortamında JavaScript çalıştırmada önemli bir rol oynar ve birçok API ve özellik sağlar.

window Nesnesinin Temel Özellikleri

Özellikler

 1// Get and display the document's title
 2console.log(`Title: ${window.document.title}`);
 3
 4// Get and display the current URL
 5console.log(`URL: ${window.location.href}`);
 6
 7// Go back to the previous page
 8// Note: this will navigate back in history, so be careful when running it
 9console.log("Navigating back to the previous page...");
10window.history.back();
11
12// Display the browser's user agent
13console.log(`User Agent: ${window.navigator.userAgent}`);
14
15// Display the width and height of the viewport
16console.log(`Viewport Width: ${window.innerWidth}`);
17console.log(`Viewport Height: ${window.innerHeight}`);
  • window.document: Mevcut HTML dökümanına erişir.
  • window.location: Mevcut URL'yi ve tarayıcı dolaşımını yönetir.
  • window.history: Tarayıcının geçmiş bilgilerine erişir ve ileri-geri dolaşım sağlar.
  • window.navigator: Tarayıcı ve cihaz hakkında bilgi sağlar.
  • window.innerWidth / window.innerHeight: Görüntüleme alanının genişliği ve yüksekliğini alır.

Metotlar

 1// Show an alert
 2window.alert('Hello, this is an alert!');
 3
 4// Show a confirmation dialog
 5if (window.confirm('Are you sure you want to proceed?')) {
 6    console.log('User clicked OK');
 7} else {
 8    console.log('User clicked Cancel');
 9}
10
11// Show a prompt dialog
12const userInput = window.prompt('Please enter your name:');
13console.log(`Hello, ${userInput}!`);
14
15// Open a new tab
16window.open('https://www.example.com', '_blank');
17
18// Display a message after 3 seconds
19window.setTimeout(() => {
20    console.log('This message appears after 3 seconds!');
21}, 3000);
22
23// Display a message every second
24const intervalId = window.setInterval(() => {
25    console.log('This message appears every second!');
26}, 1000);
27
28// Clear the interval after 5 seconds
29setTimeout(() => {
30    clearInterval(intervalId);
31    console.log('Interval cleared.');
32}, 5000);
  • window.alert(): Bir uyarı iletişim kutusu gösterir.
  • window.confirm(): Kullanıcı onayı isteyen bir iletişim kutusu gösterir ve Tamam veya İptal sonucunu döndürür.
  • window.prompt(): Kullanıcı girdisi isteyen bir iletişim kutusu gösterir ve girilen değeri alır.
  • window.open(): Yeni bir pencere veya sekme açar.
  • window.setTimeout() / window.setInterval(): Belirli bir süre sonra ya da düzenli aralıklarla bir fonksiyonu çalıştırmak için bir zamanlayıcı ayarlar.

Olay Yönetimi

 1// Display a message when the page is fully loaded
 2window.onload = () => {
 3    console.log('Page is fully loaded!');
 4};
 5
 6// Display a message when the window is resized
 7window.onresize = () => {
 8    console.log('Window resized! New size:', window.innerWidth, 'x', window.innerHeight);
 9};
10
11// Display a message when the page is being scrolled
12window.onscroll = () => {
13    console.log('Page is being scrolled!');
14};
  • window.onload: Bu olay, sayfa tamamen yüklendiğinde tetiklenir.
  • window.onresize: Bu olay, pencere yeniden boyutlandırıldığında tetiklenir.
  • window.onscroll: Bu olay, kullanıcı sayfayı kaydırdığında gerçekleşir.

Küresel Bir Değişken Olarak Rol

1var myVar = 10;
2console.log(window.myVar); // 10
  • window nesnesi küresel değişkenleri ve fonksiyonları tutar. Başka bir deyişle, tanımlanan değişkenler ve fonksiyonlar otomatik olarak window'un özellikleri haline gelir.

JavaScript'te DOM Manipülasyonu

JavaScript DOM (Document Object Model) manipülasyonu, web sayfasındaki öğelerle dinamik olarak etkileşim kurmak için kullanılır. DOM, bir HTML belgesinin yapısını bir ağaç olarak temsil eder ve bu yapı, JavaScript kullanılarak değiştirilebilir, böylece sayfanın yapısı ve görüntüsü kontrol edilebilir.

DOM'un Temelleri

DOM, bir web sayfasının HTML'ini nesneler olarak ele alır ve öğelere ve özniteliklere erişim ve bunların değiştirilmesini sağlar. HTML belgesine erişmek için document nesnesini kullanın.

DOM Öğelerini Alma

JavaScript'in, DOM'daki öğelere erişmek için bir dizi yöntemi vardır.

  • document.getElementById(): Bir öğeyi id özniteliğine göre getirir.
  • document.getElementsByClassName(): Sınıf adına göre öğeleri getirir. HTMLCollection döndürür. HTMLCollection, DOM'daki değişiklikleri gerçek zamanlı olarak yansıtan canlı bir koleksiyondur.
  • document.getElementsByTagName(): Etiket adına göre öğeleri getirir. HTMLCollection döndürür.
  • document.querySelector(): CSS seçicisi kullanarak eşleşen ilk öğeyi getirir.
  • document.querySelectorAll(): CSS seçicisi kullanarak eşleşen tüm öğeleri getirir. NodeList döndürür. NodeList, alındığı andaki durumu tutan statik bir koleksiyondur ve sonraki DOM değişikliklerini yansıtmaz.

Örnek: getElementById ve querySelector

1<div id="content">Hello, World!</div>
2<button id="changeText">Change Text</button>
1const content = document.getElementById('content');
2console.log(content.textContent); // "Hello, World!"
3
4const button = document.querySelector('#changeText');

DOM Manipülasyonu

Alınan öğeler üzerinde çeşitli işlemler yapılabilir.

Metni Değiştirme

Bir öğenin metnini değiştirmek için textContent veya innerHTML kullanın.

  • textContent: Bir öğenin metin içeriğini alın veya değiştirin. HTML etiketleri yorumlanmaz.
  • innerHTML: Bir öğenin HTML içeriğini alın veya değiştirin. HTML etiketleri içeren dizeler de işlenir.
1content.textContent = 'Hello, world!';  // Change the text
2button.innerHTML = '<strong>Click to change</strong>';  // Change including HTML

Özellikleri Değiştirme

Element özelliklerini değiştirmek için setAttribute() ve getAttribute() kullanın.

1button.setAttribute('disabled', 'true');  // Disable the button
2const id = content.getAttribute('id');  // Get the "content"
3console.log(id);

CSS'yi Değiştirme

style özelliğini kullanarak CSS stillerini değiştirin.

1content.style.color = 'red';  // Change the text color to red
2content.style.fontSize = '20px';  // Change the font size

Sınıfları Yönetme

Bir elemente sınıf eklemek veya sınıfı kaldırmak için classList kullanın.

  • add(): Bir sınıf ekler.
  • remove(): Bir sınıfı kaldırır.
  • toggle(): Bir sınıfın var olup olmadığına göre ekler veya kaldırır.
  • contains(): Bir sınıfın var olup olmadığını kontrol eder.
1content.classList.add('highlight');  // Add a class
2button.classList.toggle('active');   // Toggle a class

DOM Elemanlarını Oluşturma ve Silme

Yeni Elemanlar Oluşturma

Yeni bir eleman oluşturup DOM'a eklemek için document.createElement() kullanın.

1const newDiv = document.createElement('div');  // Create a new div element
2newDiv.textContent = 'This is a new element';
3document.body.appendChild(newDiv);  // Append to the body element

Ögeleri Silmek

Bir elemanı silmek için remove() yöntemini kullanın.

1newDiv.remove();  // Remove the created element

Olayları Eklemek

DOM manipülasyonunun bir parçası olarak, kullanıcı etkileşimlerine yanıt veren olay işlemleri ekleyebilirsiniz. Tıklamalar ve klavye etkileşimleri gibi olayları işlemek için addEventListener() kullanın.

1button.addEventListener('click', () => {
2    content.textContent = 'The text has been changed';
3});

Bu örnekte, bir düğmeye tıklamak #content elementinin metnini değiştirir.

DOM Ağacında Gezinme

Ebeveyn ve kardeş elemanlara erişmek için DOM'da gezinebilirsiniz.

  • parentNode: Üst düğüme erişir.
  • childNodes: Alt düğümlere erişir. Tüm türdeki düğümlere erişebilirsiniz; yalnızca HTML etiketleri gibi öğe düğümleri değil, aynı zamanda metin düğümleri ve yorum düğümleri de dahildir.
  • firstChild / lastChild: İlk ve son alt öğeye erişir.
  • nextSibling / previousSibling: Sonraki ve önceki kardeş öğelere erişir.
1const parent = content.parentNode;  // Get the parent element
2const firstChild = parent.firstChild;  // Get the first child element
3console.log(firstChild);

Örnek: Bir Listeye Yeni Bir Öğe Ekleme

Bir listeye yeni bir öğe ekleme örneği burada.

 1// Get the container element where the HTML will be inserted
 2const content = document.getElementById('content');
 3
 4// Create the <ul> element with id="list"
 5const list = document.createElement('ul');
 6list.id = 'list';
 7
 8// Add initial list items
 9const item1 = document.createElement('li');
10item1.textContent = 'Item 1';
11list.appendChild(item1);
12
13const item2 = document.createElement('li');
14item2.textContent = 'Item 2';
15list.appendChild(item2);
16
17// Create the <button> element with id="addItem"
18const addItemButton = document.createElement('button');
19addItemButton.id = 'addItem';
20addItemButton.textContent = 'Add Item';
21
22// Append the list and button to the content container
23content.appendChild(list);
24content.appendChild(addItemButton);
25
26// Add event listener to the button
27addItemButton.addEventListener('click', () => {
28    const newItem = document.createElement('li');
29    newItem.textContent = 'New Item';
30    list.appendChild(newItem);
31});

Bu kodda, "Öğe Ekle" düğmesine tıklamak listeye yeni bir <li> öğesi ekler.

Özet

  • JavaScript DOM manipülasyonu, bir HTML belgesindeki öğeleri almanıza, değiştirmenize, oluşturmanıza ve silmenize olanak tanır.
  • getElementById() ve querySelector() gibi yöntemleri kullanarak öğeleri alabilirsiniz.
  • Metni ve HTML'yi değiştirmek için textContent veya innerHTML kullanın ve özellikleri manipüle etmek için setAttribute() kullanın.
  • Yeni öğeler oluşturmak için createElement() kullanın ve öğeleri silmek için remove() kullanın.
  • Olay yönetimiyle kullanıcı eylemlerine yanıt veren etkileşimli web sayfaları oluşturabilirsiniz.

Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.

YouTube Video