হাইপারলিংক ক্লিকে জাভাস্ক্রিপ্ট ফাংশন কল করুন


93

আমি এএসপি.এনইটি ফাইলের পিছনে সি # কোডে গতিশীলভাবে একটি হাইপারলিঙ্ক তৈরি করছি। ক্লায়েন্ট ক্লিকে আমার একটি জাভাস্ক্রিপ্ট ফাংশন কল করতে হবে। আমি কীভাবে এটি সম্পাদন করব?


উত্তর:


135

Neater এখনও পরিবর্তে typical href="#"বা href="javascript:void"বা href="whatever", আমি এই অনেক বেশি অর্থে তোলে:

var el = document.getElementById('foo');
el.onclick = showFoo;


function showFoo() {
  alert('I am foo!');
  return false;
}

<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>

জাভাস্ক্রিপ্ট ব্যর্থ হলে কিছু প্রতিক্রিয়া রয়েছে। তদ্ব্যতীত, অনৈতিক আচরণ (ক্ষেত্রে href="#"একই পৃষ্ঠাতে পরিদর্শন করা ক্ষেত্রে ঝাঁপিয়ে পড়া href="") মুছে ফেলা হয়।


13
+1 এটি বর্তমানে একমাত্র আপত্তিজনক উত্তর। আমি পারলে +100।
জেমস

@ লুইস, হ্যাঁ, আদর্শ <a> ট্যাগগুলি খাঁটি জেএস কলগুলির জন্য ব্যবহৃত হত না, তবে দুর্ভাগ্যক্রমে পুরানো ব্রাউজারগুলি সমর্থন করে না: লিঙ্কহীন উপাদানগুলির জন্য হোভার। সুতরাং লিঙ্কগুলি প্রায়শই জেএস ইভেন্টগুলি ট্রিগার করতে ব্যবহৃত হত।
ক্রিস ভ্যান অপস্টাল

@ ক্রিস - আমি নিশ্চিত নই যে আপনি আমার পয়েন্ট ক্রিস পেয়েছেন। আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি <a href="#"> কিছুই করবেন না </a> এবং পরিবর্তে <a href="a/link/somwhere.html "> কিছু করুন </a> ব্যবহার করুন এবং তারপরে ব্যবহার করুন href ওভাররাইড প্রগতিশীল বর্ধন। এটিই সবচেয়ে পরিষ্কার সমাধান। অ্যাঙ্করগুলি ঠিক আছে, তবে জাভাস্ক্রিপ্ট অক্ষম করা থাকলে - বা কোনও কারণে (আই 6 হিসাবে) কিছু জাভাস্ক্রিপ্ট হ্যান্ডলারটি তৈরি এবং নির্ধারিত হওয়ার আগেই ভেঙেছিল should এইভাবে আপনার সমস্ত ব্যবহারকারী খুশি।
লুইস

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

4
এটি কাজ করে না, এটি আপনাকে কেবল href url এ নির্দেশ দেয়।
প্যাডটক

59

সবার সহজ উত্তর হ'ল ...

<a href="javascript:alert('You clicked!')">My link</a>

অথবা জাভাস্ক্রিপ্ট ফাংশন কল করার প্রশ্নের উত্তর দিতে:

<script type="text/javascript">
function myFunction(myMessage) {
    alert(myMessage);
}
</script>

<a href="javascript:myFunction('You clicked!')">My link</a>


4
স্ট্যাকওভারফ্লো 'রান কোড স্নিপেট' লিঙ্কটি ফায়ারফক্সে কাজ করে না (কোনও সতর্কতা তৈরি হয় না), তবে যখন আমি এই জাতীয় লিঙ্কটিকে এই জাতীয় লিঙ্কে রাখি তখন এটি এফএফ-এ কাজ করে।
the_pwner224

হ্যাঁ এটি বিজোড়, এটি আমার জন্য কাজ করছিল, এখন তা নয়। অন্যদের অনুরূপ সমস্যা ছিল এবং ফায়ারফক্স পুরোপুরি পুনরায় ইনস্টল করা বাদ দিয়ে কোনওরই একটি নির্দিষ্ট সমাধান বলে মনে হচ্ছে না।
জয়ডেন লসন

26

অনক্লিক প্যারামিটার সহ ...

<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>

বিভ্রান্তিকর বক্তব্য এটি গুগল.কম এ যাচ্ছে বা জাভাস্ক্রিপ্ট ফাংশন কল করছে? কোনটির অগ্রাধিকার আছে?
এনগুই আল

12

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

<div class="menu">
    <a href="http://example.org">Example</a>
    <a href="http://foobar.com">Foobar.com</a>
</div>

<script>
jQuery( 'div.menu a' )
    .click(function() {
        do_the_click( this.href );
        return false;
    });

// play the funky music white boy
function do_the_click( url )
{
    alert( url );
}
</script>

53
জাভাস্ক্রিপ্ট jQuery বিকাশ করার জন্য আবিষ্কার করা হয়েছিল? এটি একটি নতুন!
পালসুইম

35
এটি পড়ার মতো ছিল যে লেগো ব্যাটম্যান তৈরির জন্য উদ্ভাবিত হয়েছিল।
শান সলোমন

4
@ শ্যাশনসোলোমন আমি খুশি যে আমরা সম্মত হয়েছি :)
এলকুকো

4
@ এলকুকো, দুর্দান্ত ব্যঙ্গ! + 'ডি :) দীর্ঘ লাইভ
জিকিউরি

6

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

<a href='#' onclick='jsFunction();alert('it works!');'>Link</a>

এটি ইনপুট ট্যাগগুলিতে যেমন ব্যবহার করা যেতে পারে।

<input type='button' value='Submit' onclick='jsFunction();alert('it works!');'>


3

আদর্শভাবে আমি সম্পূর্ণরূপে আপনার কোডগুলিতে লিঙ্ক তৈরি করা এড়াতে পারি কারণ আপনার কোডটি যখনই এই লিঙ্কগুলির প্রত্যেকটির 'মার্কআপ' পরিবর্তন করতে চান প্রতিবার সংশোধন করা দরকার। যদি আপনাকে এটি করতে হয় আমি আপনার জাভাস্ক্রিপ্টের 'কল' আপনার HTML এর মধ্যে এম্বেড করব না, এটি সম্পূর্ণরূপে একটি খারাপ অভ্যাস, আপনার মার্কআপটি আপনার দস্তাবেজটি যা না তা বর্ণনা করে, এটি আপনার জাভাস্ক্রিপ্টের কাজকে বোঝায়।

আপনার কাছে প্রতিটি উপাদান (বা শ্রেণীর সাধারণ কার্যকারিতা থাকলে) এর জন্য নির্দিষ্ট আইডি রয়েছে এমন একটি পদ্ধতির ব্যবহার করুন এবং তারপরে ইভেন্ট হ্যান্ডলার (গুলি) যুক্ত করার জন্য প্রগ্রেসিভ বর্ধন ব্যবহার করুন:

[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");

[Javascript]  
document.getElementById('uxAncMyLink').onclick = function(e){

// do some stuff here

    return false;
    }

এইভাবে আপনার কোডটি জেএস অক্ষম ব্যবহারকারীদের জন্য ভাঙবে না এবং এতে উদ্বেগের স্পষ্ট বিভাজন থাকবে।

আশা করি তা কাজে লাগবে।


4
সি # কেন? শুধু কেন নয় <a href="https://stackoverflow.com/link/for/javascriptDisabled/Browsers.aspx" id="uxAncMyLink">My Link</a>?
মাহমুদভিসি

2

অনক্লিক ইভেন্টটি সরাসরি পরবর্তী উপাদান হিসাবে সেট করার জন্য আমি এলিমেন্ট.আটাচএভেন্ট (আইই) বা এলিমেন্ট.এডএইডএলটিস্টেনার (অন্যান্য ব্রাউজারগুলি) ব্যবহার করার পরামর্শ দেব that উপাদানটির জন্য কোনও বিদ্যমান ইভেন্ট হ্যান্ডলারকে প্রতিস্থাপন করবে।

সংযুক্তিভেন্ট / অ্যাডএভেন্টলিস্টিং একাধিক ইভেন্ট হ্যান্ডলার তৈরি করার অনুমতি দেয়।


1

onclickএইচটিএমএল বৈশিষ্ট্যটি ব্যবহার করুন ।

onclickইভেন্ট হ্যান্ডলার উপাদান যা ব্যবহারকারীদের মাউস বাটন থেকে একটি ক্লিক ঘটনা ধারন করে onclickঅ্যাট্রিবিউট প্রয়োগ করা হয়। এই ক্রিয়াটির ফলস্বরূপ স্ক্রিপ্ট পদ্ধতিতে একটি জাভাস্ক্রিপ্ট ফাংশন হিসাবে কল করা [...]


1

আপনি যদি পৃষ্ঠাটি লোড হওয়ার জন্য অপেক্ষা না করেন তবে আপনি আইডি দ্বারা উপাদানটি নির্বাচন করতে পারবেন না। এই কোডটি কার্যকর করতে কোডটি পেতে যে কেউ সমস্যায় পড়ছে তাদের পক্ষে কাজ করা উচিত

<script type="text/javascript">
window.onload = function() {
    document.getElementById("delete").onclick = function() {myFunction()};

    function myFunction() {
        //your code goes here
        alert('Alert message here');
    }
};
</script>

<a href='#' id='delete'>Delete Document</a>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.