برنامه نویسی

وب Dev Day 7: راهنمای JavaScript قسمت 2

فهرست مطالب

DOM در جاوا اسکریپت چیست؟

در مدل شیء سند (DOM) است رابط برنامه نویسی که به JavaScript اجازه می دهد تعامل ، دستکاری و به روزرسانی صفحات وب به صورت پویابشر

این نمایانگر یک سند HTML به عنوان یک ساختار درخت، جایی که هر کدام عنصر HTML یک گره استبشر

1. درک ساختار DOM

این را در نظر بگیرید سند HTML:




    DOM Example


    
    

This is a paragraph.

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چگونه DOM این صفحه را نشان می دهد:

Document
 ├── html
 │    ├── head
 │    │    ├── title
 │    ├── body
 │         ├── h1 (id="heading")
 │         ├── p (class="text")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. دسترسی به DOM با استفاده از JavaScript

انتخاب عناصر توسط شناسه (getElementById)

let heading = document.getElementById("heading");
console.log(heading.textContent);  
// Output: "Hello, DOM!"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

انتخاب عناصر توسط کلاس (getElementsByClassName

let paragraphs = document.getElementsByClassName("text");
console.log(paragraphs[0].textContent);  
// Output: "This is a paragraph."
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

انتخاب عناصر با نام برچسب (getElementsByTagName)

let allHeadings = document.getElementsByTagName("h1");
console.log(allHeadings[0].textContent);  
// Output: "Hello, DOM!"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

روش مدرن: با استفاده از queryselector و queryselectorall

let heading = document.querySelector("#heading"); // Selects by ID
let paragraph = document.querySelector(".text"); // Selects first element with class
let allParagraphs = document.querySelectorAll(".text"); // Selects all elements with class

console.log(heading.textContent);  
// Output: "Hello, DOM!"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. اصلاح DOM (تغییر محتوا)

تغییر HTML داخلی

document.getElementById("heading").innerHTML = "Hello, JS!";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تغییر محتوای متن

document.getElementById("heading").textContent = "Hello, JavaScript!";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4. دستکاری عناصر DOM

اضافه کردن یک عنصر جدید (CreateElement & AppendChild)

let newPara = document.createElement("p");
newPara.textContent = "This is a new paragraph!";
document.body.appendChild(newPara);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حذف یک عنصر (removeechild)

let element = document.getElementById("heading");
element.parentNode.removeChild(element);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تغییر سبک های CSS با استفاده از JavaScript

document.getElementById("heading").style.color = "blue";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

5. رسیدگی به رویدادها در DOM

اضافه کردن یک شنونده رویداد

document.getElementById("heading").addEventListener("click", function() {
    alert("Heading clicked!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حذف یک شنونده رویداد

function greet() {
    console.log("Heading clicked!");
}

let heading = document.getElementById("heading");
heading.addEventListener("click", greet);
heading.removeEventListener("click", greet);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دستکاری ویژگی ها در JavaScript (DOM)

JavaScript فراهم می کند روش به اضافه کردن ، اصلاح و حذف ویژگی های عناصر HTML به صورت پویا.

1. دسترسی به ویژگی ها

getAttribute()

مقدار یک ویژگی را دریافت می کند.

let link = document.querySelector("a");
console.log(link.getAttribute("href"));  
// Output: The URL inside the `href` attribute
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

setAttribute()

یک ویژگی را تنظیم یا به روز می کند.

let link = document.querySelector("a");
link.setAttribute("href", "https://example.com");
console.log(link.getAttribute("href"));  
// Output: "https://example.com"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

hasAttribute()

بررسی می کند که آیا یک عنصر دارای یک ویژگی خاص است.

let button = document.querySelector("button");

if (button.hasAttribute("disabled")) {
    console.log("Button is disabled");
} else {
    console.log("Button is enabled");
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

removeAttribute()

یک ویژگی را از یک عنصر حذف می کند.

let input = document.querySelector("input");
input.removeAttribute("disabled");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. کار با ویژگی های کلاس

classList.add()

یک کلاس را به یک عنصر اضافه می کند.

let box = document.querySelector(".box");
box.classList.add("active");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

classList.remove()

کلاس را حذف می کند.

box.classList.remove("active");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

classList.toggle()

یک کلاس روشن/خاموش را تغییر می دهد.

box.classList.toggle("hidden");

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

classList.contains()

اگر یک عنصر دارای کلاس باشد ، بررسی می کند.

console.log(box.classList.contains("hidden"));  
// Output: true or false
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. کار با داده ها-* ویژگی ها

ویژگی های سفارشی (داده-*) داده های اضافی را در عناصر ذخیره می کنند.

دریافت داده-* ویژگی ها

let button = document.querySelector("button");
console.log(button.getAttribute("data-user-id"));  
// Output: User ID stored in `data-user-id`
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استفاده از مجموعه داده برای دسترسی آسان تر

console.log(button.dataset.userId);  
// Output: User ID stored in `data-user-id`
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

تنظیم داده ها-* ویژگی ها

button.dataset.status = "active";
console.log(button.dataset.status);  
// Output: "active"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

4. فعال کردن/غیرفعال کردن عناصر (ویژگی غیرفعال)

let button = document.querySelector("button");

// Disable the button
button.setAttribute("disabled", true);

// Enable the button
button.removeAttribute("disabled");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دستکاری سبک ها در JavaScript (DOM)

JavaScript به شما امکان می دهد پویا سبک CSS را تغییر دهید در عناصر HTML با استفاده از style دارایی یا کلاسهای CSSبشر

1. تغییر سبک های درون خطی

می توانید اصلاح کنید خواص CSS با استفاده از .style خاصیت

let box = document.querySelector(".box");
box.style.backgroundColor = "blue";
box.style.color = "white";
box.style.padding = "20px";
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. اصلاح چند سبک با استفاده از csStext

box.style.cssText = "background: red; color: white; padding: 15px;";

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. استفاده از لیست کلاس برای دستکاری CSS

به جای اصلاح مستقیم سبک ها ، از کلاس های CSS برای کنترل بهتر استفاده کنید.

اضافه کردن کلاس

box.classList.add("highlight");
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حذف یک کلاس

box.classList.remove("highlight");

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

جابجایی یک کلاس (روشن/خاموش)

box.classList.toggle("hidden");

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

بررسی اینکه آیا یک عنصر دارای کلاس است

console.log(box.classList.contains("hidden"));  
// Output: true or false
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

پیمایش در صفحه با استفاده از JavaScript (DOM Navigation)

JavaScript انواع مختلفی را ارائه می دهد روشهای ناوبری DOM حرکت بین عناصر در صفحه وببشر

دسترسی به عناصر والدین ، ​​فرزند و خواهر و برادر

گرفتن عنصر والدین (parentNode واد parentElement)

let child = document.querySelector(".child");
console.log(child.parentNode);   
console.log(child.parentElement);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Feature                 Method
Get Parent Element  parentNode, parentElement
Get Child Elements  firstElementChild, lastElementChild
Get Sibling Elements    nextElementSibling, previousElementSibling
Scroll to Section   scrollIntoView()
Redirect to URL         window.location.href
Reload Page         window.location.reload()
Navigate History    window.history.back() / forward()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اضافه کردن عناصر به صفحه با استفاده از JavaScript (دستکاری DOM)

JavaScript به شما امکان می دهد به صورت پویا عناصر را ایجاد و اضافه کنید به صفحه وب با استفاده از DOM APIبشر

1. ایجاد و افزودن یک عنصر

createElement() با appendChild()

let newPara = document.createElement("p"); // Create 

element newPara.textContent = "This is a new paragraph!"; // Add text document.body.appendChild(newPara); // Append to body

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. اضافه کردن یک عنصر در داخل یک والدین خاص

let parentDiv = document.getElementById("container");

let newDiv = document.createElement("div");
newDiv.textContent = "Hello, this is a new div!";
newDiv.classList.add("new-box");

parentDiv.appendChild(newDiv);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. با استفاده از insertbefore () (در یک موقعیت خاص درج کنید)

let list = document.getElementById("list");
let newItem = document.createElement("li");
newItem.textContent = "New Item";

let firstItem = list.firstElementChild; // Get first item
list.insertBefore(newItem, firstItem);  // Insert before it
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Feature                        Method
Create an Element          createElement("tag")
Add Text                   element.textContent = "Text"
Append to End                  appendChild(element)
Insert Before                  insertBefore(newElement, referenceElement)
Insert at Specific Position    insertAdjacentHTML(position, html)
Prepend Element                prepend(element)
Clone Element                  cloneNode(true)
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حذف عناصر از صفحه با استفاده از JavaScript (دستکاری DOM)

JavaScript به شما امکان می دهد عناصر را بصورت پویا حذف کنید از DOM با استفاده از روشهای مختلف.

حذف یک عنصر با استفاده از remove()

let element = document.getElementById("box");
element.remove();
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. از بین بردن عنصر کودک با استفاده از removeechild ()

let parent = document.getElementById("container");
let child = document.getElementById("child");

parent.removeChild(child);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Feature                       Method
Remove an element         element.remove()
Remove a child                parent.removeChild(child)
Remove first/last child       firstElementChild.remove() / lastElementChild.remove()
Remove all children       innerHTML = ""
Remove using parent       parentNode.removeChild(element)
Remove multiple elements      querySelectorAll().forEach(el => el.remove())
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

رویدادهای DOM در جاوا اسکریپت

وقایع DOM به JavaScript اجازه دهید تعامل کاربر مانند کلیک ، فشار کلیدی و حرکات ماوسبشر

1. اضافه کردن یک شنونده رویداد (addEventListener)

let button = document.getElementById("myButton");

button.addEventListener("click", function() {
    console.log("Button clicked!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

onclick وت onmouseenter وقایع در جاوا اسکریپت

JavaScript فراهم می کند دستگیرندگان رویداد مانند onclick وت onmouseenter به تعامل کاربر را تشخیص دهید مانند کلیک و حرکات ماوسبشر

1 onclick رویداد (کلیک ها را تشخیص می دهد)

در onclick واقعه هنگامی که یک عنصر است آتش می گیرد کلیک کردبشر

با استفاده از onclick با HTML (Inline)


حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استفاده از OnClick در JavaScript (رویکرد بهتر)

let button = document.getElementById("myButton");

button.onclick = function() {
    alert("Button clicked!");
};
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با استفاده از addeventlistener (“کلیک”) (بهترین تمرین)

let btn = document.getElementById("myButton");

btn.addEventListener("click", () => {
    alert("Button clicked using addEventListener!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. رویداد OnMouseenter (Hover Mouse)

رویداد OnMouseEnter هنگام ورود موش به یک عنصر آتش می گیرد.

مثال: تغییر رنگ پس زمینه در شناور

let box = document.getElementById("box");

box.onmouseenter = function() {
    box.style.backgroundColor = "yellow";
};

box.onmouseleave = function() {
    box.style.backgroundColor = "white";
};
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

addEventListener() در جاوا اسکریپت

در addEventListener() روش به جاوا اسکریپت اجازه می دهد شنوندگان رویداد را ضمیمه کنید به عناصر HTML به صورت پویا.

این است روش ارجح برای رسیدگی به رویدادها زیرا از آن پشتیبانی می کند چند دستگیرهبشر

نحو اساسی

element.addEventListener("event", function);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

شنوندگان رویداد برای عناصر در JavaScript

جاذب شنوندگان رویداد به شما اجازه می دهد تا تشخیص دهید تعامل کاربر روی عناصر مانند دکمه ها ، پیوندها ، ورودی ها و فرم هابشر

1. اضافه کردن یک شنونده رویداد (addEventListener())

element.addEventListener("event", function);
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

this در رویداد شنوندگان در JavaScript

در this کلمه کلیدی بر اساس نحوه تعریف عملکرد در شنوندگان متفاوت رفتار می کند.

1 this در یک عملکرد منظم (به عنصر اشاره دارد)

هنگام استفاده از a عملکرد منظمبا this اشاره به عنصری که باعث ایجاد این رویداد شدبشر

let button = document.getElementById("myButton");

button.addEventListener("click", function() {
    console.log(this);  // Logs the button element
    this.style.backgroundColor = "blue"; // Changes button color
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

رویدادهای صفحه کلید در JavaScript

جاذب رویدادهای صفحه کلید به شما امکان می دهد وقتی کاربر یک کلید را فشار داده یا آزاد می کند ، تشخیص دهید.

1. انواع رویدادهای صفحه کلید

واقعه شرح
keydown هنگامی که یک کلید است آتش می گیرد فشار
keyup هنگامی که یک کلید است آتش می گیرد عاری از
keypress (مستهلک) شبیه به keydown، اما تشخیص نمی دهد Shiftبا Ctrlبا Alt، و غیره

بهترین تمرین: استفاده کردن keydown وت keyup به جای keypressبشر

2. تشخیص مطبوعات کلید (keydown)

document.addEventListener("keydown", (event) => {
    console.log(`Key pressed: ${event.key}`);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

در جاوا اسکریپت رویدادهایی را تشکیل می دهند

جاذب وقایع به شما امکان می دهد تعامل کاربر را با عناصر فرم ، مانند فیلدهای ورودی ، کادر چک و دکمه هابشر

1. رویدادهای فرم مشترک

| Event | Description |
|-------|------------|
| `submit` | Fires when a form is submitted |
| `focus` | Fires when an input field gains focus |
| `blur` | Fires when an input field loses focus |
| `change` | Fires when an input value changes (for dropdowns, checkboxes, etc.) |
| `input` | Fires when the user types in an input field |
| `reset` | Fires when the form is reset |
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. از ارسال فرم پیش فرض جلوگیری کنید (submit رویداد)

let form = document.getElementById("myForm");

form.addEventListener("submit", (event) => {
    event.preventDefault(); // Prevent page reload
    console.log("Form submitted!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

استخراج داده های فرم در JavaScript

JavaScript به شما امکان می دهد مقادیر ورودی فرم را بازیابی کنید برای اعتبار سنجی ، پردازش یا ارسال داده به سرور به صورت پویا.

1. استخراج داده ها با استفاده از querySelector

document.getElementById("myForm").addEventListener("submit", function(event) {
    event.preventDefault(); // Prevent page reload

    let name = document.querySelector("#name").value;
    let email = document.querySelector("#email").value;
    let message = document.querySelector("#message").value;

    console.log(`Name: ${name}, Email: ${email}, Message: ${message}`);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

2. استخراج داده ها با استفاده از عناصر[]

document.getElementById("myForm").addEventListener("submit", function(event) {
    event.preventDefault();

    let form = event.target;
    let name = form.elements["name"].value;
    let email = form.elements["email"].value;

    console.log(`Name: ${name}, Email: ${email}`);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

3. استخراج کادر انتخاب و مقادیر دکمه رادیویی

document.getElementById("myForm").addEventListener("submit", function(event) {
    event.preventDefault();

    let agree = document.querySelector("#agree").checked;
    let gender = document.querySelector('input[name="gender"]:checked').value;

    console.log(`Agreement: ${agree}, Gender: ${gender}`);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

Feature                    Method
Get Input Value            document.querySelector("#id").value
Get Checkbox Value     document.querySelector("#id").checked
Get Selected Radio Value document.querySelector('input[name="name"]:checked').value
Get Dropdown Value     document.querySelector("#id").value
Extract All Form Data      new FormData(form).entries()
Send Data to Server    fetch("URL", { method: "POST", body: formData })
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

change رویداد در جاوا اسکریپت

در change واقعه آتش سوزی هنگام ورودی فرم تمرکز خود را پس از تغییر ارزش از دست می دهدبشر

معمولاً برای کشویی ، کادر چک ، دکمه های رادیویی و ورودی های متنبشر

1. نحو اساسی

element.addEventListener("change", function(event) {
    console.log(event.target.value);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

input رویداد در جاوا اسکریپت

در input واقعه آتش سوزی هر زمان که مقدار یک میدان ورودی تغییر کند، آن را برای ایده آل برای به روزرسانی های زندهبشر

1. نحو اساسی

element.addEventListener("input", function(event) {
    console.log(event.target.value);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حباب رویداد در JavaScript

حباب رویداد مفهومی در DOM است که در آن یک رویداد از عنصر هدف شروع می شود وت به سمت بالا پخش می شود به اجداد آن

1. چگونه حباب رویداد کار می کند

HTML زیر را در نظر بگیرید:

حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حال ، بیایید شنوندگان رویداد را اضافه کنیم:

document.getElementById("child").addEventListener("click", () => {
    console.log("Child clicked!");
});

document.getElementById("parent").addEventListener("click", () => {
    console.log("Parent clicked!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

با کلیک روی سیاهههای مربوط به دکمه ها:

کودک کلیک کرد!
والدین کلیک کردند!

این رویداد از کودک (دکمه) شروع می شود و حباب تا والدین (DIV).

2. متوقف کردن حباب رویداد (StopPropagation ())

برای جلوگیری از حباب از event.stoppropagation () استفاده کنید:

document.getElementById("child").addEventListener("click", (event) => {
    event.stopPropagation();
    console.log("Child clicked!");
});

document.getElementById("parent").addEventListener("click", () => {
    console.log("Parent clicked!");
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اکنون با کلیک روی دکمه فقط سیاهههای مربوط:

کودک کلیک کرد!

رویداد والدین شروع نمی شود.

نمایندگی رویداد در جاوا اسکریپت

نمایندگی یک تکنیک در جاوا اسکریپت است که در آن شنونده تک رویداد به یک عنصر والدین اضافه می شود تا حوادث را بر روی چندین عناصر کودک انجام دهد ، حتی اگر به صورت پویا اضافه شوند.

1. چرا از نمایندگی رویداد استفاده می کنید؟

🔹 بدون هیئت رویداد (اضافه کردن شنوندگان رویداد به هر دکمه)

let buttons = document.querySelectorAll(".btn");

buttons.forEach(button => {
    button.addEventListener("click", () => {
        console.log("Button clicked!");
    });
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

برای عناصر اضافه شده پویا کار نمی کند.

2. با استفاده از نمایندگی رویداد

document.getElementById("parent").addEventListener("click", (event) => {
    if (event.target.matches(".btn")) {
        console.log(`Button Clicked: ${event.target.textContent}`);
    }
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

چرا استفاده می شود؟

  • فقط یک شنونده رویداد لازم است.
  • برای هر دو عناصر موجود و پویا اضافه شده است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا