জাভাস্ক্রিপ্ট ব্যবহার করে কোনও এইচটিএমএল উপাদান কীভাবে সরাবেন?


124

আমি মোট নবাগত। কেউ আমাকে বলতে পারেন কীভাবে মূল জাভাস্ক্রিপ্টটি jQuery না করে কোনও এইচটিএমএল উপাদান সরিয়ে ফেলতে হয়।

index.html

<html>
<head>
 <script type="text/javascript" src="myscripts.js" > </script>
 <style>
 #dummy {
  min-width: 200px;
  min-height: 200px;
  max-width: 200px;
  max-height: 200px;
  background-color: #fff000;
 }
 </style>
</head>
<body>
 <div id="dummy"></div>

 <form>
  <input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/>
 </form>
</body>

myscripts.js

function removeDummy() {
 var elem = document.getElementById('dummy');
 elem.parentNode.removeChild(elem);
}

আমি জমা দেওয়ার বোতামটি ক্লিক করলে কী হয় তা হ'ল এটি খুব অল্প সময়ের জন্য অদৃশ্য হয়ে যাবে এবং তারপরে তাত্ক্ষণিকভাবে ফিরে আসবে। আমি বোতামটি ক্লিক করলে আমি উপাদানটি সম্পূর্ণরূপে সরাতে চাই।


আমি যদি এটি ক্লিক করি, একটি ত্রুটি দেখি এবং স্টপ টিপুন ?
অ্যালেক্স

দুঃখিত, এটি বিষয়ভিত্তিক তবে এটি সত্যই মজার, তিনি তার নাম রাখেন- / নিজেকে "নিউবি কোডার" এবং এখন প্রোফাইলটির সুনাম প্রায় 9000 এর কাছাকাছি। "ভাল পুরানো সময়ে" কিছু জিজ্ঞাসা করা আজকাল সত্যিই লাভজনক itable :)
রেনি

উত্তর:


189

যা ঘটছে তা হ'ল ফর্মটি জমা দেওয়া হচ্ছে, এবং তাই পৃষ্ঠাটি রিফ্রেশ হচ্ছে (তার মূল সামগ্রী সহ) with আপনি clickজমা দেওয়ার বোতামে ইভেন্টটি পরিচালনা করছেন ।

আপনি যদি উপাদানটি সরিয়ে ফর্মটি জমা না করতে চান submitতবে পরিবর্তে ফর্মটিতে ইভেন্টটি পরিচালনা করুন এবং ফিরে আসুনfalse আপনার হ্যান্ডলার থেকে আসুন:

এইচটিএমএল:

<form  onsubmit="return removeDummy(); ">
    <input type="submit" value="Remove DUMMY"/>
</form>

javascript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}

তবে এর জন্য আপনার কোনও ফর্মের প্রয়োজন হয় না (বা চান), না এটির একমাত্র উদ্দেশ্য যদি ডামি ডিভটি সরিয়ে ফেলা হয়। পরিবর্তে:

এইচটিএমএল:

<input type="button" value="Remove DUMMY" onclick="removeDummy()" />

javascript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}

তবে ইভেন্ট হ্যান্ডলারগুলি সেটআপ করার সেই স্টাইলটি পুরানো old আপনার জাভাস্ক্রিপ্ট কোডটি তার নিজস্ব ফাইলে এবং এ জাতীয়তে ভাল প্রবণতা আছে বলে মনে হয়। পরবর্তী পদক্ষেপটি এটি আরও গ্রহণ করা এবং onXYZইভেন্ট হ্যান্ডলারদের হুক করার জন্য বৈশিষ্ট্যগুলি ব্যবহার করা এড়ানো। পরিবর্তে, আপনার জাভাস্ক্রিপ্টে, আপনি তার পরিবর্তে এটিকে আরও নতুন (সারকা বছর 2000) এর সাহায্যে আঁকতে পারেন:

এইচটিএমএল:

<input id='btnRemoveDummy' type="button" value="Remove DUMMY"/>

javascript:

function removeDummy() {
    var elem = document.getElementById('dummy');
    elem.parentNode.removeChild(elem);
    return false;
}
function pageInit() {
    // Hook up the "remove dummy" button
    var btn = document.getElementById('btnRemoveDummy');
    if (btn.addEventListener) {
        // DOM2 standard
        btn.addEventListener('click', removeDummy, false);
    }
    else if (btn.attachEvent) {
        // IE (IE9 finally supports the above, though)
        btn.attachEvent('onclick', removeDummy);
    }
    else {
        // Really old or non-standard browser, try DOM0
        btn.onclick = removeDummy;
    }
}

... তারপরে আপনার পৃষ্ঠার একেবারে শেষের দিকে (ক্লোজিং ট্যাগের ঠিক আগে ) pageInit();কোনও কল থেকে , বা ইভেন্টের মধ্যে থেকেই কল করুন , যদিও পৃষ্ঠা লোড চক্রের মধ্যে এটি খুব দেরিতে ঘটে এবং তাই সাধারণত ঘটনা হুক করার পক্ষে ভাল হয় না হ্যান্ডলারগুলি (এটি পরে ঘটে)scriptbody</body>window load উদাহরণস্বরূপ, সমস্ত চিত্র শেষ পর্যন্ত লোড )।

নোট করুন যে ব্রাউজারের পার্থক্যগুলি মোকাবেলায় আমাকে কিছু পরিচালনা করতে হয়েছিল। আপনি সম্ভবত ইভেন্টগুলি হুক করার জন্য একটি ফাংশন চাইবেন যাতে আপনাকে প্রতিবার সেই যুক্তিটির পুনরাবৃত্তি করতে হবে না। অথবা মত একটি লাইব্রেরি ব্যবহারের বিষয়ে বিবেচনা jQuery এর , প্রোটোটাইপ , Yui , বন্ধ আপনার জন্য ব্রাউজারের পার্থক্যগুলি সাবলীল করতে , বা অন্য যে কোনও । এটি খুব গুরুত্বপূর্ণ হিসাবে করে DOM দীর্ঘ আগে, কাজে ব্যবহৃত জন্য প্রস্তুত যত তাড়াতাড়ি চালানোর জন্য) আগুন। অন্তর্নিহিত কাপড় জাভাস্ক্রিপ্ট মৌলিক এবং DOM মৌলিক নিরিখে চলছে উভয় বুঝতে কিন্তু লাইব্রেরি অসঙ্গতি অনেকটা সাথে মোকাবিলা, এবং এছাড়াও কুশলী ইউটিলিটি অনেক প্রদান - ইভেন্ট হ্যান্ডলার যে আপ hooking একটি উপায় মতো পুলিশ ব্রাউজার পার্থক্য। তাদের বেশিরভাগ একটি ফাংশন সেট আপ করার জন্য একটি উপায়ও সরবরাহ করে (যেমনpageInitwindow load


এটিকে পরিবর্তন করুন type="button"বা return false;আপনার জেএস ফাংশনে রাখুন
পাভ

@ পাভ: আমি মনে করি আমি জমা দিতে থাকব কারণ এটি কেবল একটি পরীক্ষামূলক অনুশীলন। আমি এমন কিছু প্রকল্প করব যা জমা ব্যবহার করে যাতে আমি আরও ভালভাবে অভ্যস্ত হয়ে যাই ... যাইহোক ধারণাটির জন্য ধন্যবাদ।
নবাবি কোডার

@ নিউবি: আমি আরও কয়েকটি নোট যুক্ত করেছি।
টিজে ক্রাউডার

2
কেন শুধু এগারটি করা হবে না rem
মুহাম্মদ উমর

1
@ ঘোস 3 টি - কয়েকটি উপায়: ১. আপনি কোনও অ্যাট্রিবিউট-স্টাইল হ্যান্ডলার থেকে যে কোনও ফাংশন কল করবেন তা বিশ্বব্যাপী হতে হবে এবং বিশ্বব্যাপী নেমস্পেসটি ইতিমধ্যে সত্যিই ভিড়যুক্ত ™ এবং এমন কোনও ফাংশনের নাম বাছাই করা সহজ যা অন্য কোনও কিছুর সাথে বিরোধযুক্ত (এটি) যদিও কোনও সম্ভাব্য-অনন্য নামযুক্ত কোনও অবজেক্ট ব্যবহার করে এবং এটিতে আপনার সমস্ত হ্যান্ডলার লাগিয়ে সম্বোধন করা যেতে পারে)। ২. পুরানো অ্যাট্রিবিউট-স্টাইলের উপায়ে ব্যবহার করুন (বা onxyzউপাদানটিতে সম্পত্তি অর্পণ করা ) কেবলমাত্র একটি একক হ্যান্ডলারকে অনুমতি দেয় এবং আপনি যদি সম্পত্তি অর্পণ করেন তবে সেখানে যা কিছু ব্যবহৃত হত তা প্রতিস্থাপন করুন, সুতরাং এটি অন্যদের সাথে ভাল খেলছে না। (চালিয়ে যাওয়া)
টিজে ক্রাউডার

34

শুধু এই কাজ element.remove();

এখানে দেখুন

http://jsfiddle.net/4WGRP/


5
এটির জন্য যত্নবান , এটি মোটামুটি নতুন সংযোজন বলে মনে হচ্ছে এবং এর সাথে IE এবং FF সংস্করণ 22 এবং তার আগের ( red-team-design.com/… ) পূর্ণ ব্রাউজার সমর্থন নেই ।
দুল

1
আমি ব্যক্তিগতভাবে এটি ব্যবহারের জন্য আরও 5 বছর অপেক্ষা করব
স্লাইটব্যাটম্যান

2
ভাল, এখন এটি কার্যকরভাবে সমর্থিত বলে মনে হচ্ছে: caniuse.com/#search=remove । আমি এখন এটি ব্যবহার করতে গ্রহণ করব। আপনার যদি আইই 11 সমর্থন করার প্রয়োজন হয় তবে আমি মনে করি একটি পলিফিল সহজেই নির্মিত হতে পারে ...
জেহন

5
ভবিষ্যতের প্রুফ কোড লেখা অতীতের জন্য প্রোগ্রামিংয়ের চেয়ে ভাল। নিজেকে রক্ষণাবেক্ষণের সময় এবং সংরক্ষণ করুন.remove()
গিবল্ট

9

আপনার ইনপুট টাইপ = "জমা দিন" পরিবর্তে ইনপুট টাইপ = "বোতাম" ব্যবহার করা উচিত।

<form>
  <input type="button" value="Remove DUMMY" onclick="removeDummy(); "/>
 </form>

বেসিক এইচটিএমএল এবং জাভাস্ক্রিপ্ট সংস্থানগুলির জন্য মোজিলা বিকাশকারী চেকআউট করুন


1
আমি আপনার লিঙ্কটি ডাব্লু 3 স্কুল থেকে মোজিলা বিকাশকারী কেন্দ্রে পরিবর্তন করেছি। আমার যুক্তির জন্য w3fools.com এ এক নজরে দেখুন ... তা ছাড়াও ভাল উত্তর :)
এলাস্টার পিটস

2
@ অ্যাস্টায়ার পিটস - ঠিক আছে। আমি কেবল
পিওকে

8

আপনার জাভাস্ক্রিপ্টটি সঠিক। আপনার বোতামটির type="submit"ফলে পৃষ্ঠাটি রিফ্রেশ হচ্ছে।


5

এটি পুনরায় প্রদর্শিত হবে কারণ আপনার জমা বোতামটি পৃষ্ঠাটি পুনরায় লোড করে। এই আচরণটি রোধ করার সহজ উপায় হ'ল এটির মতো একটি যুক্ত return falseকরা onclick:

<input type="submit" value="Remove DUMMY" onclick="removeDummy(); return false;" />

4

ইনপুট প্রকারটি "বোতাম" এ পরিবর্তন করুন। টিজে এবং পাভ যেমন বলেছিলেন, ফর্মটি জমা দেওয়া হচ্ছে। আপনার জাভাস্ক্রিপ্টটি সঠিক দেখাচ্ছে এবং অ-জিক্যুয়ারি পদ্ধতিতে চেষ্টা করার জন্য আমি আপনাকে প্রশংসা করছি :)


আমি মনে করি আমি জমা দিতে থাকব কারণ এটি আমার ভবিষ্যতের প্রকল্পগুলির জন্য একটি পরীক্ষামূলক অনুশীলন যা জমা ব্যবহার করে যাতে আমি আরও ভালভাবে
অভ্যস্ত

4

index.html

<input id="suby" type="submit" value="Remove DUMMY"/>

myscripts.js

document.addEventListener("DOMContentLoaded", {
//Do this AFTER elements are loaded

    document.getElementById("suby").addEventListener("click", e => {
        document.getElementById("dummy").remove()
    })

})

3

এটি সঠিক কোড is সম্ভবত যা ঘটছে তা হ'ল আপনার ফর্মটি জমা দেওয়া হচ্ছে এবং আপনি নতুন পৃষ্ঠাটি দেখুন (যেখানে উপাদানটি আবার উপস্থিত থাকবে)।


3

আপনার স্ক্রিপ্টে এই কোডটি চালানোর চেষ্টা করুন ।

document.getElementById("dummy").remove();

এবং এটি আশা করি উপাদান / বোতামটি সরিয়ে ফেলবে।


2

এইটা কাজ করে. divআপনি যদি বোতামটি রাখতে চান তবে "ডামি" থেকে বোতামটি সরিয়ে দিন ।

function removeDummy() {
  var elem = document.getElementById('dummy');
  elem.parentNode.removeChild(elem);
  return false;
}
#dummy {
  min-width: 200px;
  min-height: 200px;
  max-width: 200px;
  max-height: 200px;
  background-color: #fff000;
}
<div id="dummy">
  <button onclick="removeDummy()">Remove</button>
</div>


1

আমি এখনও একটি নবাগত, তবে এখানে একটি সহজ এবং সহজ উপায়: আপনি আউটআর এইচটিএমএল ব্যবহার করতে পারেন, যা পুরো ট্যাগ, কেবল একটি অংশ নয়:

EX: <tag id='me'>blahblahblah</tag>এর অন্তর্নিহিত এইচটিএমএল হবে blahblahblahএবং বাইরের এইচটিএমএল পুরো জিনিস হবে <tag id='me'>blahblahblah</tag>,।


সুতরাং, উদাহরণস্বরূপ, আপনি যদি ট্যাগটি মুছতে চান তবে এটি মূলত এর ডেটা মুছে ফেলছে, তাই আপনি যদি বাইরের এইচটিএমএলকে একটি খালি স্ট্রিংয়ে পরিবর্তন করেন তবে এটি মোছার মতো।

<body>
    <p id="myTag">This is going to get removed...</p>
    <input type="button" onclick="javascript:
        document.getElementById('myTag').outerHTML = '';//this makes the outerHTML (the whole tag, not what is inside it)
    " value="Remove Praragraph">
</body>

পরিবর্তে, আপনি যদি এটি কেবল প্রদর্শন করতে না চান, আপনি দৃশ্যমানতা, অস্বচ্ছতা এবং প্রদর্শন বৈশিষ্ট্যগুলি ব্যবহার করে এটি জেএসে স্টাইল করতে পারেন।

document.getElementById('foo').style.visibility = hidden;
//or
document.getElementById('foo').style.opacity = 0;
//or
document.getElementById('foo').style.display = none;



মনে রাখবেন যে opacity উপাদানটিকে এখনও প্রদর্শন করে তোলে, কেবল আপনি এটি এতটা দেখতে পাচ্ছেন না। এছাড়াও, আপনি পাঠ্য নির্বাচন করতে পারবেন, অনুলিপি করা সত্ত্বেও, পাঠ্য, অনুলিপি, আটকানো এবং আপনি যা করতে পারেন তা করতে পারেন।
Visibility আপনার পরিস্থিতি আরও ফিট করে তবে এটি যে উপাদানটিতে প্রয়োগ করা হয়েছিল তার চেয়ে ফাঁকা স্বচ্ছ স্থান ছেড়ে দেবে।
আপনি কীভাবে আপনার ওয়েবপৃষ্ঠা তৈরি করেন তার উপর নির্ভর করে আমি আপনাকে প্রদর্শন করার পরামর্শ দেব। আপনার দর্শন থেকে উপাদানটি মুছতে মুছুন, তবে আপনি এখনও এটি ডিভুলগুলিতে দেখতে পাচ্ছেন। আশাকরি এটা সাহায্য করবে!

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.