নালীর সম্পত্তি 'অভ্যন্তরীণ এইচটিএমএল' সেট করতে পারে না


97

আমি কেন ত্রুটি বা আনকচড টাইপ এরিয়ার পাব: নালীর সম্পত্তি 'অভ্যন্তরীণ এইচটিএমএল' সেট করতে পারি না? আমি ভেবেছিলাম আমি অন্তর্নিহিত এইচটিএমএল বুঝতে পেরেছি এবং এটির আগে এটি ব্যবহার করা হয়েছে।

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>

<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>

</head>

<body>
<div id="hello"></div>
</body>
</html>

উত্তর:


170

স্থানে আছে helloযাতে এটি বিদ্যমান যখন স্ক্রিপ্ট লোড হয়, স্ক্রিপ্ট সামনে DIV আছে।


17
আপনি যদি উইন্ডো.অনলোড = ফাংশন নাম () use ব্যবহার করেন তবে ডিভটি আগে বা পরে রয়েছে তা বিবেচ্য নয়।
কলিন 1337

4
ক্রিস্পি সলিউশন। তবে আমি এখনও ত্রুটি পাচ্ছি। ক্রোম / ফেডোরা 25 / এপাচে
সাহু ভি কুমার

48

আসুন এটি প্রথমে কেন ঘটছে তার মূল কারণটি বোঝার চেষ্টা করি।

আমি কেন ত্রুটি বা আনকচড টাইপ এরিয়ার পাই: নালীর সম্পত্তি 'অভ্যন্তরীণ এইচটিএমএল' সেট করতে পারি না?

ব্রাউজার সর্বদা উপরে থেকে নীচে পুরো এইচটিএমএল ডিওএম লোড করে। scriptট্যাগগুলির অভ্যন্তরে লিখিত কোনও জাভাস্ক্রিপ্ট কোড ( headআপনার এইচটিএমএল ফাইলের বিভাগে উপস্থিত ) আপনার পুরো ডিওএম (বডি ট্যাগের মধ্যে উপস্থিত বিভিন্ন HTML উপাদান) লোড হওয়ার আগেই ব্রাউজার রেন্ডারিং ইঞ্জিন দ্বারা কার্যকর করা হয়। headট্যাগে উপস্থিত স্ক্রিপ্টগুলি helloডিওমে রেন্ডার হওয়ার আগেই আইডি থাকা কোনও উপাদানটি অ্যাক্সেস করার চেষ্টা করছে । সুতরাং স্পষ্টতই, জাভাস্ক্রিপ্ট উপাদানটি দেখতে ব্যর্থ হয়েছে এবং সুতরাং নাল রেফারেন্স ত্রুটিটি দেখে আপনি শেষ end

আপনি কীভাবে এটি আগের মতো কাজ করতে পারেন?

ব্যবহারকারী আপনার পৃষ্ঠায় প্রথমবারের সাথে অবতরণ করার সাথে সাথে আপনি পৃষ্ঠায় "হাই" বার্তাটি প্রদর্শন করতে চান। সুতরাং আপনি যখন ডওম সম্পূর্ণরূপে লোড হয়ে গেছে এবং helloআইডি উপাদানটি অ্যাক্সেসযোগ্য / উপলভ্য এই বিষয়টি সম্পর্কে সম্পূর্ণ নিশ্চিত হন তখন আপনাকে একটি বিন্দুতে আপনার কোডটি আপ করতে হবে । এটি দুটি উপায়ে অর্জনযোগ্য:

  1. আপনার স্ক্রিপ্টগুলি পুনঃক্রম করুন : আপনার helloআইডি উপাদানটি ডিওএম ইতিমধ্যে লোড হওয়ার পরে কেবল আপনার স্ক্রিপ্টগুলি ফায়ার হয়ে যাবে । আপনি সমস্ত ডিওএম উপাদানগুলির পরে স্ক্রিপ্ট ট্যাগটি সরানোর মাধ্যমে এটি অর্জন করতে পারেন অর্থাৎ নীচে যেখানে bodyট্যাগটি শেষ হচ্ছে। যেহেতু রেন্ডারিং শীর্ষ থেকে নীচে ঘটে তাই আপনার স্ক্রিপ্টগুলি শেষ পর্যন্ত কার্যকর করা যায় এবং আপনি কোনও ত্রুটির মুখোমুখি হন না।

    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Untitled Document</title>
    </head>
    
    <body>
    <div id="hello"></div>
    
    <script type ="text/javascript">
        what();
        function what(){
            document.getElementById('hello').innerHTML = 'hi';
        };
    </script>
    </body>
    </html>

  1. ইভেন্ট হুকিং ব্যবহার করুন : ব্রাউজারের রেন্ডারিং ইঞ্জিন ইভেন্টের মাধ্যমে একটি ইভেন্ট ভিত্তিক হুক সরবরাহ করে window.onloadযা আপনাকে ইঙ্গিত দেয় যে ব্রাউজারটি ডিওএম লোড করা শেষ করেছে। সুতরাং যখন এই ইভেন্টটি বহিস্কার হবে, আপনি নিশ্চিত হয়ে উঠতে পারবেন যে আপনার helloআইডি সহ ডিওমে ইতিমধ্যে লোড হওয়া এবং এর পরে জাভাস্ক্রিপ্ট বহিস্কার করা হয়েছে যা এই উপাদানটি অ্যাক্সেস করার চেষ্টা করে ব্যর্থ হবে না। সুতরাং আপনি কোড স্নিপেট নীচের মত কিছু করতে। দয়া করে নোট করুন যে এই ক্ষেত্রে, আপনার স্ক্রিপ্টটিhead ট্যাগের অভ্যন্তরে আপনার HTML ডকুমেন্টের শীর্ষে উপস্থিত থাকা সত্ত্বেও কাজ করে ।

<!DOCTYPE HTML>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Untitled Document</title>
        <script type ="text/javascript">
            window.onload = function() {
            what();
            function what(){
                document.getElementById('hello').innerHTML = 'hi';
            };
        }
        </script>
        </head>
        
        <body>
        <div id="hello"></div>
        </body>
        </html>


ভাল স্টাফ, তবে আমি যুক্ত করব, আমি যে ফাংশনটি ডকুমেন্ট.জেটমেন্টমেন্টবাইআইডি (..) করেন তা মনে করি না। অভ্যন্তরীণ এইচটিএমএল। ওভারলোডের মধ্যে রাখা দরকার। যেহেতু এটি ডিওএম লোড হওয়ার আগে লোড করতে পারে এবং কোনও ত্রুটি নেই। শুধুমাত্র এটির কল করা দরকার। jsfiddle.net/fbz6wLpd/8
বারলপ

40

আপনি জাভাস্ক্রিপ্টকে "অ্যানলোড" ক্রিয়াটি করতে বলতে পারেন ... এটি দিয়ে চেষ্টা করুন:

<script type ="text/javascript">
window.onload = function what(){
document.getElementById('hello').innerHTML = 'hi';
};
</script>

11

আপনার জেএসটি কেবল .ুকিয়ে দিন window.onload

window.onload = function() {

        what();

        function what() {
            document.getElementById('hello').innerHTML = 'hi';
        };

    }

7

পৃষ্ঠাটি লোড হয়ে গেলে জাভাস্ক্রিপ্ট অংশটি চালানো দরকার, সুতরাং এটি বডি ট্যাগের শেষে জাভাস্ক্রিপ্ট স্ক্রিপ্টটি রাখার পরামর্শ দেওয়া হয়।

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Example</title>

</head>
<body>
<div id="hello"></div>
<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>  
</body>
</html>


4
আপনি দয়া করে আপনার প্রতিটি শব্দকে মূলধন বন্ধ করবেন?
ভেরটেক্সট

6

জাভাস্ক্রিপ্ট ভাল দেখাচ্ছে। ডিভি লোড হওয়ার পরে এটি চালানোর চেষ্টা করুন। ডকুমেন্ট প্রস্তুত হলেই চালনার চেষ্টা করুন। $(document).readyjquery মধ্যে।


4
স্ক্রিপ্ট ট্যাগগুলিতে টাইপ বৈশিষ্ট্যও অপ্রচলিত।
জেটি নোলান

4
এবং এটিকে সমাধান করার জন্য jquery আমদানি ওভারকিল না করা যদি না আপনি এখানে এই প্রকল্পের জন্য এটি ব্যবহার করার পরিকল্পনা না করেন। window.onloadযথেষ্ট হতে পারে তবে অন্যান্য ইভেন্টগুলিও উপলব্ধ। MDN এ রেফ করুন window: বিকাশকারী.মোজিলা.আর.ইন-
ইউএস

5

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Example</title>

</head>
<body>
<div id="hello"></div>
<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = '<p>hi</p>';
    };
</script>  
</body>
</html>


আপনার উত্তরটি সঠিক তবে আমি আপনাকে আপনার উত্স-কোডের আশেপাশে কিছু প্রসঙ্গ যুক্ত করার জন্য অনুরোধ করতে পারি। কোড-কেবল উত্তরগুলি বোঝা মুশকিল। আপনি যদি আপনার পোস্টে আরও তথ্য যুক্ত করতে পারেন তবে এটি প্রশ্নকারী এবং ভবিষ্যতের পাঠকদের উভয়কেই সহায়তা করবে।
আরবিটি

3

এখানে আমার স্নিপেট চেষ্টা করে দেখুন আমি আশা করি এটি আপনার পক্ষে সহায়ক হবে।

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
</head>

<body>
  
<div id="hello"></div>
  
<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>
</body>
</html>


3

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


3

মূল কারণটি: জাভাস্ক্রিপ্ট কোডের আগে কোনও পৃষ্ঠায় এইচটিএমএল লোড করতে হয় । 2 উপায়ে সমাধান করা:

1) জেএস কোডের আগে এইচটিএমএল লোডের অনুমতি দিন।

<script type ="text/javascript">
    window.onload = function what(){
        document.getElementById('hello').innerHTML = 'hi';
    }
</script>

//or set time out like this:
<script type ="text/javascript">
    setTimeout(function(){
       what();
       function what(){
          document.getElementById('hello').innerHTML = 'hi';
       };
    }, 50);
    //NOTE: 50 is milisecond.
</script>

2) এইচটিএমএল কোডের অধীনে জেএস কোডটি সরান

<div id="hello"></div>
<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>

1

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Untitled Document</title>
</head>
<body>
<div id="hello"></div>
<script type ="text/javascript">
    what();
    function what(){
        document.getElementById('hello').innerHTML = 'hi';
    };
</script>
</body>
</html>


মুষ্টি এইচটিএমএল ডিভিড লোড হচ্ছে সমস্যা ..এখন জাভা স্ক্রিপ্ট ফাংশন কলিং এখন এটি কাজ করে ...
ব্যবহারকার 11114253

1

আমারও একই সমস্যা হয়েছে এবং দেখা যাচ্ছে যে নাল ত্রুটিটি কারণ আমি যে HTMLটির সাথে কাজ করছি তা সংরক্ষণ না করেছিলাম।

পৃষ্ঠাটি লোড হয়ে যাওয়ার পরে উল্লেখ করা উপাদানটি যদি সংরক্ষণ না করা হয় তবে এটি 'নাল' হয়, কারণ দস্তাবেজটিতে লোডের সময় এটি থাকে না। উইন্ডো.অনলোড ব্যবহার ডিবাগ করতে সহায়তা করে।

আমি আশা করি এটি আপনার পক্ষে কার্যকর ছিল।


1

এইচটিএমএল রেন্ডার শেষ হওয়ার পরে আপনি যদি আপনার স্ক্রিপ্টটি লোড করেন তবুও এই ত্রুটিটি উপস্থিত হতে পারে। এই প্রদত্ত উদাহরণে আপনার কোড

<div id="hello"></div>

ডিভের ভিতরে কোনও মূল্য নেই। সুতরাং ত্রুটি উত্থাপিত হয়, কারণ ভিতরে পরিবর্তন করার কোনও মূল্য নেই। এটা হওয়া উচিত ছিল

<div id="hello">Some random text to change</div>

তারপর।


0

মধ্যে jquery যোগ করুন < head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

$ ডকুমেন্ট.ডিয়ার () ব্যবহার করুন : কোডটি < head>মেইন.জেগুলির মতো আলাদা ফাইলে বা মধ্যে থাকতে পারে

1) একই ফাইলে জেএস ব্যবহার করে (এটি এতে যুক্ত করুন < head>):

<script>
$( document ).ready(function() {
function what(){
    document.getElementById('hello').innerHTML = 'hi';
};
});
</script>

২) মেইন.জেএস এর মতো আরও কিছু ফাইল ব্যবহার করে (এটি এতে যুক্ত করুন < head>):

<script type="text/javascript" src="/path/to/main.js" charset="utf-8"></script>

এবং কোডটি মেইন.জেএস ফাইলটিতে যুক্ত করুন :)


0

আপনার divমধ্যে পরিবর্তন করা দরকার p। টেকনিক্যালি ইনারএইচটিএমএল মানে এটি <??? id=""></???>অংশের ভিতরে ।

পরিবর্তন:

<div id="hello"></div>

মধ্যে

<p id="hello"></p>

করছেন:

document.getElementById('hello').innerHTML = 'hi';

ঘুরবে

<div id="hello"></div> into this <div id="hello">hi</div>

যা আসলে বোঝায় না।

আপনি পরিবর্তন করার চেষ্টা করতে পারেন:

document.getElementById('hello').innerHTML = 'hi';

এই মধ্যে

document.getElementById('hello').innerHTML='<p> hi </p> ';

এটা কাজ করতে.


0

ত্রুটিটি স্ব-ব্যাখ্যা করছে যে এটি এইচটিএমএল ট্যাগ পাচ্ছে না যাতে আপনি ডেটা সেট করতে চান যাতে জেএসের জন্য ট্যাগ উপলব্ধ থাকে তবে কেবল আপনি সেইটিতে ডেটা সেট করতে পারবেন।


0

সন্দেহ নেই, এখানে বেশিরভাগ উত্তর সঠিক, তবে আপনি এটি করতে পারেন:

document.addEventListener('DOMContentLoaded', function what() {
   document.getElementById('hello').innerHTML = 'hi';  
});

0

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

আমার ক্ষেত্রে নিচের মতো দেখানো হয়েছে আমার কাছাকাছি ডিভ ছিল missing

   <!DOCTYPE HTML>
   <html>
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <title>Untitled Document</title>
   </head>
   <body>
   <div> //I am an open div
    <div id="hello"></div>
   <script type ="text/javascript">
       what();
       function what(){
          document.getElementById('hello').innerHTML = 'hi';
       };
   </script>
   </body>
   </html>

একটি ঘন ডিভ অনুপস্থিতীর ফলস্বরূপ শিশু থেকে পিতা-মাতা বা পিতা-মাতার সন্তানের কাছে রূপান্তরটি বিশৃঙ্খলা সৃষ্টি করতে পারে সুতরাং ফলস্বরূপ যখন আপনি ডিওএমে কোনও উপাদান অ্যাক্সেস করার চেষ্টা করবেন তখন একটি ত্রুটি ঘটবে


ওপিএস উদাহরণ অনুসারে উত্তর দিন।
মিশন

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

0

ডোম লোড করা যাক। ডোমে কিছু করার জন্য আপনাকে প্রথমে এটি লোড করতে হবে। আপনার ক্ষেত্রে আপনাকে <div>প্রথমে ট্যাগটি লোড করতে হবে । তারপরে আপনার কিছু সংশোধন করার দরকার আছে। আপনি যদি প্রথমে জেএস লোড করেন তবে সেই ফাংশনটি HTMLআপনাকে যা করতে বলেছে তা করতে চাইছে তবে সেই সময়টি যখন আপনার HTMLলোড হচ্ছে এবং আপনার ফাংশনটি এটি খুঁজে পাবে না HTML। সুতরাং আপনি স্ক্রিপ্টটি পৃষ্ঠার নীচে রাখতে পারেন। <body>ট্যাগের ভিতরে ফাংশনটি অ্যাক্সেস করতে পারে <div>কারণ স্ক্রিপ্টটি আঘাত করার সময় ডিওএম ইতিমধ্যে লোড হয়ে গেছে।

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