এলিমেন্টবিআইডির জন্য জাভাস্ক্রিপ্ট শর্টহ্যান্ড


94

জাভাস্ক্রিপ্ট ডকুমেন্টের জন্য কোনও শর্টহ্যান্ড আছে? বা আমি কোন একটি উপায় সংজ্ঞায়িত করতে পারেন? এটা যে পুনরাবৃত্তিমূলক পুনরায় টাইপ পায় উপর এবং উপর


6
আমি জানি না যে এগুলি কমেছে, তবে যে কেউ জাভাস্ক্রিপ্টের সাথে এতটা অপরিচিত যে এটি কীভাবে শর্টকাট তৈরি করতে জানে না, যখন সে এটি ব্যবহার করে, বলতে, jQuery ব্যবহার করার চেষ্টা করে তখন সমস্যাও দেখা দিতে পারে এবং এটি আবিষ্কার করে যে $ ভেরিয়েবলটি সামঞ্জস্যপূর্ণ নয়। সঠিক উত্তরটি "না, স্থানীয়ভাবে জাভাস্ক্রিপ্ট শর্টহ্যান্ড দেয় না, তবে বেশ কয়েকটি ফ্রেমওয়ার্ক রয়েছে যা ডিওএম নোড নির্বাচন করা আরও সহজ করে তোলে।"
কোজিরো

উত্তর:


126
var $ = function( id ) { return document.getElementById( id ); };

$( 'someID' )

এখানে আমি ব্যবহার করেছি $তবে আপনি যে কোনও বৈধ পরিবর্তনশীল নাম ব্যবহার করতে পারেন।

var byId = function( id ) { return document.getElementById( id ); };

byId( 'someID' )

6
আমি পছন্দ করি বিশেষত সেখানে বৈধ পরিবর্তনশীল নামের
ফক্স উইলসন

4
"বৈধ পরিবর্তনশীল নামের ধনসম্পদ সহ" - আপনার অর্থ কি "কমপক্ষে দুটি বড় জেএস ফ্রেমওয়ার্ক ইতিমধ্যে ব্যবহার করছে $, সেটিও বেছে নেওয়ার জন্য অভিনন্দন?"
পিসকোভর

49
$আপনি যদি কখনও এগুলি লোড না করেন তবে কতগুলি লাইব্রেরি ব্যবহার করা হবে তাতে কোনও পার্থক্য নেই ।
ব্যবহারকারী 113716

7
কেবল রেকর্ডের জন্য, আমি করতাম var $ = document.getElementById.bind(document)তবে bindসমস্ত ব্রাউজারে উপলব্ধ নেই। সম্ভবত এটি যদিও দ্রুত, কারণ আমি কেবল দেশীয় পদ্ধতি ব্যবহার করছি। শুধু এটি যুক্ত করতে চেয়েছিলেন।
pimvdb

7
@ পিসকোভার: আমি কখনও অজ্ঞতা সামঞ্জস্য করার কোড করি না। অজ্ঞতা ভাঙা কোডে বাড়ে। ভাঙা কোড গবেষণার দিকে নিয়ে যায়। গবেষণা তথ্য বাড়ে। অজ্ঞতা নিরাময় হয়।
ব্যবহারকারী 113716

85

অতিরিক্ত চরিত্র সংরক্ষণ করতে আপনি স্ট্রিং প্রোটোটাইপকে এভাবে দূষিত করতে পারেন:

pollutePrototype(String, '绎', {
    configurable: false, // others must fail
    get: function() {
        return document.getElementById(this);
    },
    set: function(element) {
        element.id = this;
    }
});

function pollutePrototype(buildIn, name, descr) {
    var oldDescr = Object.getOwnPropertyDescriptor(buildIn.prototype, name);
    if (oldDescr && !oldDescr.configurable) {
        console.error('Unable to replace ' + buildIn.name + '.prototype.' + name + '!');
    } else {
        if (oldDescr) {
            console.warn('Replacing ' + buildIn.name + '.prototype.' + name + ' might cause unexpected behaviour.');
        }
        Object.defineProperty(buildIn.prototype, name, descr);
    }
}

এটি কিছু ব্রাউজারে কাজ করে এবং আপনি উপাদানগুলিতে এইভাবে অ্যাক্সেস করতে পারেন:

document.body.appendChild(
    'footer'.绎 = document.createElement('div')
);
'footer'.绎.textContent = 'btw nice browser :)';

আমি প্রায় এলোমেলোভাবে সম্পত্তিটির নামটি বেছে নিয়েছি। আপনি যদি এই শর্টহ্যান্ডটি ব্যবহার করতে চান তবে আমি টাইপ করার সহজ কিছু নিয়ে আসার পরামর্শ দেব।


12
绎 (Yì) - আনারভেল (সরলীকৃত চীনা)
আনানানফায়

8
আপনি বুঝতে পারেন যে এটি দক্ষতায় একটি যুক্তিসঙ্গত হিট নেয়। প্রোটোটাইপে সংজ্ঞায়িত গেটর / সেটারগুলি প্রস্থের ধীর গতির একটি ক্রম।
রায়নস

5
এছাড়াও, এটি কেবল একটি দৃশ্যমান চরিত্র হতে পারে তবে এটি ফাইলটিতে একাধিক বাইট লাগবে ...
Alnitak

@ অলনিটক: ওহ ঠিক আছে, আমি এটা ভেবে দেখিনি। তদুপরি কিছু লোকের (আমার মতো) কীবোর্ডগুলিতে একটি 绎 কী নেই, তাই তারা অনুলিপি এবং এটি পেস্ট করার জন্য অনেক সময় ব্যয় করবে। তবে নামটি আসলে গুরুত্বপূর্ণ নয়। মূলত আমি সম্পত্তিটির নাম দিয়েছি 'ই' (উপাদানটির মতো) তবে আমি ভেবেছিলাম ইতিমধ্যে কিছু লাইব্রেরির দ্বারা এই নামটি দাবি করা যেতে পারে।
রবার্ট

@ রায়নোস: হ্যাঁ, আমার মানদণ্ডে এটি নিয়মিত ফাংশনের চেয়ে প্রায় তিনগুণ কম slow 0.4µs ​​* 3 = 1.2µs
রবার্ট

18

আপনি সহজেই নিজেকে সহজেই শর্টহ্যান্ড তৈরি করতে পারেন:

function getE(id){
   return document.getElementById(id);
}

@ সরফরাজ এটি ভেরিয়েবল বা ফাংশন হিসাবে ঘোষণা করা ভাল কি? এটা কি কোন ব্যাপার?
ব্যবহারকারী 1431627

@ ব্যবহারকারী 1431627: যদি ভেরিয়েবল দ্বারা আপনি ফাংশন এক্সপ্রেশন বোঝাতে চান তবে এটি সুযোগের দিক থেকে গুরুত্বপূর্ণ। আমার উত্তরে পোস্ট করা ফাংশনটি কার্যকর করার প্রসঙ্গে সর্বত্র উপলব্ধ। দেখুন: stackoverflow.com/questions/1013385/... বা kangax.github.io/nfe
সরফরাজ

@ সরফরাজ ওকে, ধন্যবাদ :) jQuery এটিকে একটি পরিবর্তনশীল সুযোগে পরিচালনা করে, তাই না? আমি জিজ্ঞাসা করার কারণটি হ'ল কারণ শীর্ষ উত্তরটি একটি পরিবর্তনশীল স্কোপ সহ লেখা হয়েছিল তবে আপনি এটি নিয়মিত ফাংশন এক্সপ্রেশন হিসাবে লিখেছিলেন।
ব্যবহারকারী 1431627

13

অবদানের জন্য একটি দ্রুত বিকল্প:

HTMLDocument.prototype.e = document.getElementById

তারপরে কেবল করুন:

document.e('id');

একটি ধরা আছে, এটি ব্রাউজারগুলিতে কাজ করে না যা আপনাকে প্রোটোটাইপগুলি প্রসারিত করতে দেয় না (উদাঃ আই 6)।


4
@ ওয়ালে1357: এই নিবন্ধটি আপনার আগ্রহী হতে পারে।
ব্যবহারকারী 113716

5
@ থিফমাস্টার " কখনই এক্স করবেন না" এটি আপনার দেওয়া সবচেয়ে খারাপ পরামর্শ। বিকল্পগুলি, উপকারিতা এবং কনস সম্পর্কে জানুন এবং প্রতিটি নির্দিষ্ট সমস্যার জন্য সেরা উত্তরটি চয়ন করুন। এক্ষেত্রে প্রোটোটাইপ বাড়িয়ে তোলার কোনও ক্ষতি নেই (যদিও আমার বলা উচিত যে অন্য উত্তরগুলি আরও ভাল ফিট, তবে এটি কেবল সম্পূর্ণ হওয়ার জন্য বাকি রয়েছে)
পাবলো ফার্নান্দেজ

আপনি কীভাবে জানবেন যে এটি কোনও ব্রাউজারে বা ভবিষ্যতে কিছুই ভাঙ্গবে না?
চোরমাস্টার

@ পাবলো ফার্নান্দেজ: আপনি এখনও হোস্ট অবজেক্টগুলি প্রসারিত করতে চান না। কমপক্ষে দুটি লাইব্রেরি যদি স্বীকৃত নামের বৈশিষ্ট্যযুক্ত কোনও হোস্ট অবজেক্টকে প্রসারিত করতে চায় তবে কেবলমাত্র প্রথম যত্নবান গ্রন্থাগার বা শেষ অসতর্ক লাইব্রেরি সফল হবে।
রবার্ট

4
@Robert এই ব্যাখ্যা স্পষ্টতই সবচেয়ে ভাল বিকল্প নয়, কিন্তু এটা হয় একটি বিকল্প। আপনার প্রত্যেকের উপকারিতা এবং বিবেচনা করা উচিত need মনে রাখবেন যে ক্লায়েন্টের পাশের জাভাস্ক্রিপ্ট লাইব্রেরিগুলি শুরু হয়েছিল prototype.jsযা ঠিক একই জিনিসটি দিয়েছিল।
পাবলো ফার্নান্দেজ

8

(শর্টহ্যান্ড কেবল আইডির মাধ্যমে উপাদান পাওয়ার জন্য নয়, শ্রেণী অনুসারে উপাদান পাওয়ার জন্য: পি)

আমি এরকম কিছু ব্যবহার করি

function _(s){
    if(s.charAt(0)=='#')return [document.getElementById(s.slice(1))];
    else if(s.charAt(0)=='.'){
        var b=[],a=document.getElementsByTagName("*");
        for(i=0;i<a.length;i++)if(a[i].className.split(' ').indexOf(s.slice(1))>=0)b.push(a[i]);
        return b;
    }
}

ব্যবহার: _(".test")শ্রেণীর নাম সহ সমস্ত উপাদান ফেরত দেয় testএবং _("#blah")আইডি সহ একটি উপাদান দেয় blah


6
কোনও কাস্টম ফাংশনে পদ্ধতির document.querySelectorAllকোনও অংশ অনুকরণ করার চেষ্টা করার পরিবর্তে আপনি আরও ভালভাবে একটি শর্টকাট তৈরি করতে চাই querySelectorAll
রব ডাব্লু

8

আইডি এর সংরক্ষণ করা হয় window

এইচটিএমএল

 <div id='logo'>logo</div>

জেএস

logo.innerHTML;

লেখার মতোই:

document.getElementById( 'logo' ).innerHtml;

আমি পূর্বের পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছি না কারণ এটি সাধারণ অনুশীলন নয়।


আপনি কেন এই পদ্ধতিটি ব্যবহার করার পরামর্শ দিচ্ছেন না তা বিশদভাবে বলতে পারেন?
ওক্কু

আমি এটি কখনও ব্যবহার করি না বলে আমি মনে করি না এটি বেট অনুশীলন। তবে এটি এটি খুঁজে পাওয়ার সবচেয়ে সংক্ষিপ্ততম উপায়।
im_benton

@ ওক্কু কারণ <div id="location"></div>এবং কল করা কার্যকর window.locationহবে না।
অ্যালেক্স


6

এখানে বেশ কয়েকটি ভাল উত্তর রয়েছে এবং বেশ কয়েকটি jQuery- এর মতো সিনট্যাক্সের চারপাশে নাচছে, তবে একটিতে আসলে jQuery ব্যবহারের কথা উল্লেখ করা হয়নি। আপনি যদি এটি চেষ্টা করার বিরোধী না হন তবে jQuery দেখুন । আসুন আপনি এর মত দুর্দান্ত সহজ উপাদান নির্বাচন করুন ..

আইডি দ্বারা :

$('#elementId')

সিএসএস ক্লাস দ্বারা :

$('.className')

উপাদান টাইপ অনুসারে :

$('a')  // all anchors on page 
$('inputs')  // all inputs on page 
$('p a')  // all anchors within paragaphs on page 

4
আমি jQuery চেষ্টা করেছিলাম, তবে আমার কী আসলেই একটি getElementById শর্টহ্যান্ডের জন্য একটি সম্পূর্ণ লাইব্রেরি দরকার?
ফক্স উইলসন

কি "সিনট্যাক্স jQuery এর মত" অন্যান্য উত্তর? বেশিরভাগ ক্ষেত্রে এগুলি কেবল ভেরিয়েবল দ্বারা রেফারেন্স প্লেইন পুরানো ফাংশন। এটি সম্পর্কে jQuery- জাতীয় কিছু নেই। ; ও)
ব্যবহারকারী 113716

4
@ পেট্রিক ডাব্লু, ঠিক আছে, আপনার উত্তর $ ('সামিড') jQuery আইডি নির্বাচকের মতো কিছুই দেখায় না '(' # সামুদ ') :)
কন

5

অন্তর্নির্মিত কেউ নেই।

আপনি যদি বিশ্বব্যাপী নেমস্পেসকে দূষিত করতে আপত্তি করেন না তবে কেন:

function $e(id) {
    return document.getElementById(id);
}

সম্পাদনা করুন - আমি ফাংশনটির নামটি কিছু অসাধারণ বলে পরিবর্তন করেছি , তবে সংক্ষিপ্ত এবং অন্যথায় jQuery বা খালি $চিহ্ন ব্যবহার করে এমন কোনও কিছুর সাথে সংঘর্ষ নয় ।


3

হ্যাঁ, এটা একই ফাংশন ব্যবহার করতে পুনরাবৃত্তিমূলক পায় উপর এবং উপর একটি ভিন্ন যুক্তি দিয়ে প্রতিটি সময়:

var myImage = document.getElementById("myImage");
var myDiv = document.getElementById("myDiv");

সুতরাং একটি দুর্দান্ত জিনিস একটি ফাংশন হবে যা একই সাথে সমস্ত যুক্তি গ্রহণ করে:

function getElementsByIds(/* id1, id2, id3, ... */) {
    var elements = {};
    for (var i = 0; i < arguments.length; i++) {
        elements[arguments[i]] = document.getElementById(arguments[i]);
    }
    return elements;
}

তারপরে আপনার একটি সামগ্রীতে থাকা সমস্ত উপাদানগুলির রেফারেন্স থাকতে হবে:

var el = getElementsByIds("myImage", "myDiv");
el.myImage.src = "test.gif";

তবে আপনাকে এখনও সেই সমস্ত আইডির তালিকা তৈরি করতে হবে।

আপনি আইডিসহ সমস্ত উপাদান চাইলে আপনি এটিকে আরও সরল করতে পারেন :

function getElementsWithIds() {
    var elements = {};
    var elementList = document.querySelectorAll("[id]");
    for (var i = 0; i < elementList.length; i++) {
        elements[elementList[i].id] = elementList[i];
    }
    return elements;
}

তবে আপনার কাছে অনেক উপাদান থাকলে এই ফাংশনটি কল করা ব্যয়বহুল হবে।


সুতরাং, তাত্ত্বিকভাবে, আপনি withকীওয়ার্ডটি ব্যবহার করলে আপনি কোডটি লিখতে পারেন:

with (getElementsByIds('myButton', 'myImage', 'myTextbox')) {
    myButton.onclick = function() {
        myImage.src = myTextbox.value;
    };
}

তবে আমি এর ব্যবহার প্রচার করতে চাই না with। সম্ভবত এটি করার আরও ভাল উপায় আছে।


2

ঠিক আছে, আপনি একটি শর্টহ্যান্ড ফাংশন তৈরি করতে পারেন, আমি এটি করি।

function $(element) {
    return document.getElementById(element);
}

এবং তারপরে আপনি যখন এটি পেতে চেয়েছিলেন, আপনি ঠিক করেন

$('yourid')

এছাড়াও, আর একটি দরকারী কৌশল যা আমি পেয়েছি তা হ'ল আপনি যদি কোনও আইটেম আইডির মান বা অভ্যন্তরীণ এইচটিএমএল পেতে চান তবে আপনি এই জাতীয় ফাংশন তৈরি করতে পারেন:

function $val(el) {
    return $(el).value;
}

function $inner(el) {
    return $(el).innerHTML;
}

আশা করি এটা আপনার ভালো লেগেছে!

আমি আসলে এই পুরো ধারণার উপর ভিত্তি করে এক ধরণের মিনি জাভাস্ক্রিপ্ট লাইব্রেরি তৈরি করেছি। এখানে এটা।


আমি আবার এই প্রশ্নটি তাকিয়ে ছিলাম, এবং এটি খুঁজে পেয়েছি। আপনি যদি jQuery এর সমস্তটি অন্তর্ভুক্ত না করতে চান তবে এটি একটি সুন্দর ঝরঝরে গ্রন্থাগার।
ফক্স উইলসন

2

আমি প্রায়শই ব্যবহার করি:

var byId='getElementById'
var byClass='getElementsByClass'
var byTag='getElementsByTag'


var mydiv=document[byId]('div') 
/* as document["getElementById"] === document.getElementById */

আমি মনে করি এটি বাহ্যিক ফাংশন (যেমন $()বা byId()) এর চেয়ে ভাল কারণ আপনি এই জাতীয় জিনিসগুলি করতে পারেন:

var link=document[byId]('list')[byClass]('li')[0][byTag]('a')[0]


BTW, এই জন্য jQuery ব্যবহার না jQuery এর অনেক, গতি অনেক শ্লথ চেয়ে document.getElementById(), মত একটি বহিস্থিত ফাংশন $()বা byId(), বা আমার পদ্ধতি: http://jsperf.com/document-getelementbyid-vs-jquery/5


1

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

JQuery এ বাক্য গঠনটি হবে $("#someid")। আপনি যদি জিকুয়ারি র‌্যাপার না হয়ে প্রকৃত ডিওএম উপাদানটি চান তবে এটি $("#someid")[0]সম্ভবত আপনি jQuery মোড়কের পরে যা কিছু করতে পারেন।

বা আপনি যদি এটি ব্রাউজার বিকাশকারী কনসোলটিতে ব্যবহার করেন তবে তাদের বিল্ট-ইন ইউটিলিটিগুলি অনুসন্ধান করুন। অন্য কারও হিসাবে উল্লেখ করা হয়েছে, Chrome জাভাস্ক্রিপ্ট কনসোলে একটি $("someid")পদ্ধতি অন্তর্ভুক্ত রয়েছে এবং আপনি বিকাশকারী সরঞ্জামসমূহ "এলিমেন্টস" ভিউতে কোনও উপাদানকে ক্লিক করতে পারেন এবং তারপরে $0কনসোলটি থেকে এটি রেফারেন্স করতে পারেন । পূর্বে নির্বাচিত উপাদান হয়ে যায় $1এবং আরও অনেক কিছু।


1

যদি এখানে কেবলমাত্র সমস্যাটি টাইপ করা হয় তবে আপনার নিজের বোধগম্যতার সাথে নিজেকে একটি জাভাস্ক্রিপ্ট সম্পাদক করা উচিত।

যদি উদ্দেশ্যটি সংক্ষিপ্ত কোডটি পাওয়া যায়, তবে আপনি jQuery এর মতো একটি জাভাস্ক্রিপ্ট লাইব্রেরি বিবেচনা করতে পারেন, বা আপনি কেবল নিজের শর্টহ্যান্ড ফাংশন লিখতে পারেন, যেমন:

function byId(string) {return document.getElementById(string);}

আমি আরও ভাল পারফরম্যান্সের জন্য উপরেরটি করতাম। আমি গত বছর যা শিখেছি তা হ'ল সংকোচনের কৌশলগুলির সাথে সার্ভারটি স্বয়ংক্রিয়ভাবে এটি আপনার জন্য করে তোলে, তাই আমার সংক্ষিপ্তকরণ কৌশলটি আসলে আমার কোডটিকে ভারী করে তুলছিল। এখন আমি পুরো ডকুমেন্টটি টাইপ করে খুশি getgetElementById।


1

আপনি যদি শর্টহ্যান্ড ফাংশন চাইছেন ...

<!DOCTYPE html>
<html>

<body>
The content of the body element is displayed in your browser.
<div id="d1">DIV</div>
<script>
var d=document;
d.g=document.getElementById;
d.g("d1").innerHTML = "catch";
</script>
</body>

</html>

বা

<!DOCTYPE html>
<html>

<body>
The content of the body element is displayed in your browser.
<div id="d1">DIV</div>
<script>
var w=window;
w["d1"].innerHTML = "catch2";
</script>
</body>


1

তীর ফাংশনগুলি কম হয়।

var $id = (id) => document.getElementById(id);

আপনি idযুক্তিটি বন্ধ করে দেওয়া বন্ধনীগুলি সরিয়েও এটি আরও ছোট করতে পারেন ।
শেগি

1

ডকুমেন্ট.কোয়ারী নির্বাচন করুন সমস্ত নির্বাচন করুন ...

function $(selector){
   var s = document.querySelectorAll(selector); 
   return s.length > 1 ? s : s[0];
}

// usage: $('$myId')

ওহ, তবে এটি দিয়ে কাজ করা কিছুটা কঠিন বলে মনে হচ্ছে। ফাংশন হয় অপরিশোধিত, একটি এইচটিএমলেমেন্ট বা নোডলিস্টে ফিরে আসতে পারে। অবশ্যই আপনি যখন এটির আইডি দ্বারা কোনও উপাদান পেতে এটি ব্যবহার করেন $('#myId')তখন সাধারণত এটি এইচটিএমলেমেন্টটি ফিরে আসে, কারণ আপনি আশাবাদী ঠিক একবার আইডি নিযুক্ত করেছেন। কিন্তু আপনি যদি প্রশ্নের সঙ্গে এটি ব্যবহার করবে পারে এটা কষ্টকর পায় একাধিক উপাদানের সাথে মেলে না।
রবার্ট

0

ঠিক আছে, যদি উপাদানটির আইডি গ্লোবাল অবজেক্টের কোনও বৈশিষ্ট্যের সাথে প্রতিযোগিতা না করে তবে আপনাকে কোনও ফাংশন ব্যবহার করতে হবে না।

myDiv.appendChild(document.createTextNode("Once I was myDiv. "));
myDiv.id = "yourDiv";
yourDiv.appendChild(document.createTextNode("But now I'm yourDiv."));

সম্পাদনা: তবে আপনি এই 'বৈশিষ্ট্য' ব্যবহার করতে চান না


:( এটি আমার কাছে ব্রাউজারের অপব্যবহারের মতো মনে হচ্ছে। এইচটিএমএল 5
স্পেসে

4
@ রায়নোস: ডেভ.ডব্লিউ.আর.আর.ইউটি.এইচটিএমএল / স্পেক / But তবে: "এটি সম্ভবত পরিবর্তিত হতে পারে Brow ব্রাউজার বিক্রেতারা এই আচরণটিকে কুইর্কস মোডে সীমাবদ্ধ করার বিষয়ে বিবেচনা করছেন" " যদিও আমার এফএফ 4 এবং আইই 8 তে কাজ করে।
রবার্ট

4
হ্যাঁ এটি এখনই কাজ করে তবে এটি নোংরা অনুভব করে এবং বছরের শেষের দিকে এটি অবনমিত হয়ে গেলে আমি অবাক হব না।
রায়নস

রেয়নস আমি আশা করি আমি ব্রাউজারগুলি বিশ্বব্যাপী নেমস্পেস দূষিত করতে পছন্দ করি না। অন্যদিকে এটি আবিষ্কার করার সময় এটি এত খারাপ জিনিস ছিল না। (যখন ওয়েবপৃষ্ঠাগুলি এইচটিএমএল কেন্দ্রিক ছিল এবং জাভাস্ক্রিপ্ট একটি দুর্দান্ত বৈশিষ্ট্য ছিল)
রবার্ট

0

আরেকটি মোড়ক:

const IDS = new Proxy({}, { 
    get: function(target, id) {
        return document.getElementById(id); } });

IDS.camelCaseId.style.color = 'red';
IDS['dash-id'].style.color = 'blue';
<div id="camelCaseId">div 1</div>
<div id="dash-id">div 2</div>

এটি, যদি আপনি কল্পনাতীত ব্যবহার করতে না চান তবে উপরে দেখুন।


0

আপনি যেমন একটি মোড়ক ফাংশন ব্যবহার করতে পারেন:

const byId = (id) => document.getElementById(id);

বা

document.getElementById কোনও ভেরিয়েবলকে documentঅবজেক্টের সাথে আবদ্ধ করে বরাদ্দ করুন ।

const byId = document.getElementById.bind(document);

দ্রষ্টব্য: দ্বিতীয় পদ্ধতিতে, আপনি যদি এটির document.getElementByIdসাথে আবদ্ধ না হন তবে documentআপনি ত্রুটি পাবেন:

Uncaught TypeError: Illegal invocation

এটি কী Function.bindকরে এটির thisমূলশব্দটি সেট করে একটি নতুন ফাংশন তৈরি করে যা আপনি যুক্তি হিসাবে সরবরাহ করেন Function.bind

জন্য পড়ুন ডক্স Function.bind


-1

আমি গতকাল এটি লিখেছিলাম এবং এটি বেশ দরকারী বলে মনে করি।

function gid(id, attribute) {
    var x = 'document.getElementById("'+id+'")';
    if(attribute) x += '.'+attribute;
    eval('x =' + x);
    return x;
}

এইভাবে আপনি এটি ব্যবহার করুন।

// Get element by ID
   var node = gid('someID'); //returns <p id='someID' class='style'>Hello World</p>

// returns 'Hello World'
// var getText = document.GetElementById('someID').innerText; 
   var getText = gid('someID', 'innerText'); 

// Get parent node
   var parentNode = gid('someID', 'parentNode');

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