راکت
Mesusjk
Mesusjk
توسط Mesusjk مطرح شد
حل
4 پاسخ

چطور یه فانشن ساخت و حذف المنت بسازیم

سلام دوستان. یه فانشنی ساختم که یه ورودی به عنوان آیدی میگیره و هردفعه که فراخوانی میشه یه input با همون آیدی که فانشن بصورت ورودی گرفته، می سازه. اما میخوام طوری این کار رو انجام بده که با هربار فراخوانی، اول input قبلی ای که ساخته رو از صفحه html حذف کنه و یه جدیدی رو بسازه.
چطور این کار رو انجام بدم؟
js:

function getInput(textInputId) {
    textInput = document.createElement("input");
    textInput.setAttribute("id", textInputId);
    btn.parentElement.appendChild(textInput);
}

html:

<body>
    <button type="button" id="btn" onclick="getInput('#textInput');">Get input</button>
</body>

@ali.bayat @milad @mhyeganeh @abedim910 @muhammad


ثبت پرسش جدید
علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat5 سال پیشمطرح شد
1

با آی دی یا کلاس اول المان رو پیدا کن
حذفش کن

document.querySelector("#textInputId").remove()

و بعد دوباره المان رو بساز


Mesusjk
Mesusjk
تخصص :برنامه نویس جنگو و پایتون
@Mesusjk5 سال پیشمطرح شد
0

اگه منظورتون این کار پایینه، خب هرچی میکنم المنت رو پیدا نمیکنه و کلا null برمیگردونه

function getInput(textInputId) {
    let btn = document.querySelector("#btn");

    let textInput = document.querySelector(textInputId);
    console.log(textInput) // returns null
    if (textInput) { textInput.remove(); }

    textInput = document.createElement("input");
    textInput.setAttribute("id", textInputId);
    btn.parentElement.appendChild(textInput);
}

@ali.bayat


علی بیات
علی بیات
تخصص :توسعه دهنده ارشد وب
@ali.bayat5 سال پیشمطرح شد
1

به این قسمت از کدت دقت کن


textInput.setAttribute("id", textInputId);

داری یه متغیر رو به عنوان id مقداری دهی میکنی
که مقدارش برابر با textInput# هست
در صورتی که باید برابر با textInput باشه
داری # رو هم پاس میدی
که باعث میشه المان پیدا نشه

textInput.setAttribute("id", "textInput");

Mesusjk
Mesusjk
تخصص :برنامه نویس جنگو و پایتون
@Mesusjk5 سال پیشمطرح شد
0

اوه اوه. واقعا اصلا متوجه این موضوع نشدم. حدود یک ساعت باهاش درگیر بودم. خیلی ممنونم که این نکته رو بهم اطلاع دادید. الان کاملا درست داره انجامش میده.
@ali.bayat


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام