টপিকঃ কিছু ছোটখাট জাভাস্ক্রীপ্ট

মাঝে মধ্যে নিজের প্রয়োজনে কিছু ছোটখাট জাভাস্ক্রীপ্ট লিখতে হয়। এই টপিকে চেষ্টা করবো সেগুলো শেয়ার করতে। অন্যরাও চাইলে শেয়ার করতে পারেন।

আজকে শেয়ার করছি দুটো জাভাস্ক্রীপ্ট।

১.
প্রথমটি দিয়ে স্প্রেডশীট কিংবা অন্য সোর্স থেকে থেকে নিউমারিক্যাল ডাটা কপি করে এইচটিএমএল ফরমের ইনপুট ফিল্ডসমূহে পপুলেট করা যায়। আপনি চাইলে যে কোন ইনপুট ফিল্ড থেকে পপুলেশন শুরু করতে পারেন।

আপনার পেইজের body ট্যাগ শেষ হওয়ার আগে স্ক্রীপ্টটি জুড়ে দিতে হবে।

<script type="text/javascript">
populate_checkbox_parent = document.createElement("div");
populate_checkbox_parent.id = "populate_checkbox_parent_div";
populate_checkbox_parent.style.position = "fixed";
populate_checkbox_parent.style.top = 0;
populate_checkbox_parent.style.right = 0;
populate_checkbox_parent.innerHTML = "<span style='color:green;font-size:.8em'>Populate </span>";

populate_checkbox = document.createElement("input");
populate_checkbox.id = "populate_checkbox_field";
populate_checkbox.type = "checkbox";
populate_checkbox.checked = true;

document.body.appendChild(populate_checkbox_parent);
document.getElementById("populate_checkbox_parent_div").appendChild(populate_checkbox);

start_value_container = document.createElement("input");
start_value_container.type = "hidden";
start_value_container.id = "populate_from_value_field";
document.body.appendChild(start_value_container);


my_input = document.getElementsByTagName("input");

for(l = 0; l < my_input.length; l++)
{
    my_input[l].setAttribute("index", l);
    my_input[l].onclick = function(){
        document.getElementById("populate_from_value_field").value = this.getAttribute("index");
    }
}


for(k = 0; k < my_input.length; k++)
{
    my_input[k].oninput = function(){
        values_to_be_inserted = this.value.replace(/,\t/g, ",");
        values_to_be_inserted = values_to_be_inserted.replace(/, /g, ",");
        values_to_be_inserted = values_to_be_inserted.replace(/\t/g, ",");
        values_to_be_inserted = values_to_be_inserted.replace(/ /g, ",");
        values_to_be_inserted = values_to_be_inserted.replace(/,,/g, ",");
        values_to_be_inserted = values_to_be_inserted.split(",");

        j=0;
        for(i=0; i < my_input.length; i++)
        {
        populate_start_from = document.getElementById("populate_from_value_field").value;
            if(i >= populate_start_from && my_input[i].type == "text" && document.getElementById("populate_checkbox_field").checked == true)
            {
                if(j < values_to_be_inserted.length)
                my_input[i].value = values_to_be_inserted[j];
                j++;
            }
        }
    }
    
}
</script>

পেইজের উপরের ডান দিকে একটা চেকবক্স থাকবে "Populate" লেখাটির পাশে, এটি চেক্‌ড অবস্থায় ডাটা পপুলেট হবে। না হয় স্বাভাবিক ইনপুট মোডে ডাটা এন্ট্রি করা যাবে।

এটি কমা, স্পেস, Tab দিয়ে ডাটাগুলোকে পৃথক করে।

নিচে একটি টেস্ট পেইজ দেয়া হলো। উদাহরণস্বরূপ: 89, 85, 98, 985, 4512, 9 11 -এই ডাটাগুলো একসাথে সিলেক্ট করে কপি করতে পারেন।

http://hostmarts.com/test/populator1.html


২.
দ্বিতীয়টিও এইচটিএমএল ফরম পপুলেটর। তবে এটি টেক্‌চুয়াল ডাটাও (স্পেইস, কমা ইত্যাদি সহ) কপি করতে পারবে। এটা প্রত্যেকটি Tab কিংবা নতুন লাইন ব্রেক দিয়ে ডাটাগুলোকে পৃথক করবে।

<script type="text/javascript">
populate_checkbox_parent = document.createElement("div");
populate_checkbox_parent.id = "populate_checkbox_parent_div";
populate_checkbox_parent.style.position = "fixed";
populate_checkbox_parent.style.top = 0;
populate_checkbox_parent.style.right = 0;
populate_checkbox_parent.innerHTML = "<span style='color:green;font-size:.8em'>Populate </span>";

populate_checkbox = document.createElement("input");
populate_checkbox.id = "populate_checkbox_field";
populate_checkbox.type = "checkbox";
populate_checkbox.checked = true;

document.body.appendChild(populate_checkbox_parent);
document.getElementById("populate_checkbox_parent_div").appendChild(populate_checkbox);

start_value_container = document.createElement("input");
start_value_container.type = "hidden";
start_value_container.id = "populate_from_value_field";
document.body.appendChild(start_value_container);


my_input = document.getElementsByTagName("input");

for(l = 0; l < my_input.length; l++)
{
    my_input[l].setAttribute("index", l);
    my_input[l].onclick = function(){
        document.getElementById("populate_from_value_field").value = this.getAttribute("index");
        ta = document.createElement("textarea");
        ta.id = "pastebin";
        ta.class = "pastebin";
        ta.style.position = "absolute";
        ta.style.borderTop = "1px solid red";
        ta.style.borderBottom = "1px solid red";
        ta.style.borderLeft = "none";
        ta.style.borderRight = "none";
        ta.style.height = "20px";
        ta.style.backgroundColor = "transparent";
        ta.cols = this.size - 1;
        if(this.type == "text" && document.getElementById("populate_checkbox_field").checked == true)
        {
            this.style.backgroundColor = "green";
            this.parentNode.insertBefore(ta, this);
            ta.focus();
        }


        if(document.getElementById("pastebin") != null)
        {
            document.getElementById("pastebin").onblur = function(){
                this.parentNode.removeChild(document.getElementById("pastebin"));
                my_input[document.getElementById("populate_from_value_field").value].style.backgroundColor = "white";
            }
            document.getElementById("pastebin").oninput = function(){
                values_to_be_inserted = this.value.replace(/\n/g, "\t");
                values_to_be_inserted = values_to_be_inserted.split("\t");
                j=0;
                for(i=0; i < my_input.length; i++)
                {
                    populate_start_from = document.getElementById("populate_from_value_field").value;
                    if(i >= populate_start_from && my_input[i].type == "text" && document.getElementById("populate_checkbox_field").checked == true)
                    {
                        if(j < values_to_be_inserted.length)
                        {
                            if(j == (values_to_be_inserted.length - 1) && values_to_be_inserted[j] == "")
                            {
                                my_input[i].value = my_input[i].value;
                            }
                            else
                            {
                                my_input[i].value = values_to_be_inserted[j];
                            }
                            j++;
                            if(j == values_to_be_inserted.length)
                            {
                                this.parentNode.removeChild(document.getElementById("pastebin"));
                                my_input[populate_start_from].style.backgroundColor = "white";
                            }
                        }
                    }
                }
            }
        }    
    }
}

</script>

নিচে একটি টেস্ট পেইজ দেয়া হলো:

http://hostmarts.com/test/populator2.html

এতে উদাহরণস্বরূপ নিচের ডাটা একসাথে কপি করে টেস্ট করতে পারেন:

56
54
66
Selim Ahmed
33/A, Kurigram

-এই ডাটাগুলো একসাথে সিলেক্ট করে কপি করতে পারেন।

স্ক্রীপ্ট দুটোতে অবশ্য কিছু সীমাবদ্ধতা আছে। যেমন: মাঝখানে কোন textarea থাকলে সেটি ইগনর হয়ে পরের ঘরগুলোতে আবার ডাটা যাবে। তবে আশা করি, আপনারা নিজের মত করে স্ক্রীপ্টগুলো এডিট করে নিতে পারবেন যদি প্রয়োজন মনে করেন।

সর্বশেষ সম্পাদনা করেছেন জেলাল (০২-০৫-২০১৩ ২০:৪১)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

এহ্‌হে! এই টপিকে মানুষের ইন্টারেস্ট নেই মনে হয়। tongue

যাকগে, বলেছি যখন, নিজে নিজেই পোস্ট করি।

আজকে কাজ করতে গিয়ে টেবিলের রো' ফিল্টার করার একটি অতি সাধারণ জাভাস্ক্রীপ্ট লিখলাম। সেটিই শেয়ার করছি।

৩. টেবিল ফিল্টার বাই ওয়ার্ড/ফ্রেজ

প্রথমে, আপনার টেবিলের ওপেনিং ট্যাগের (<table> ট্যাগটির ) উপরে এই কোডটুকু যোগ করতে হবে:

<div style="padding:0 0 15px 0; clear:both; text-align:center;">
        <b>Filter Table by Word(s):</b>&nbsp;
        <input type="text" size="35" id="input_filter" oninput="filter('myTable', document.getElementById('input_filter').value)">
        <input type="button" onclick="filter('myTable', document.getElementById('input_filter').value)" id="filter_btn" value="Filter">
        <input type="button" id="filter_clear_btn" value="Clear" onclick="document.getElementById('input_filter').value='';clear_filter('myTable')">
    </div>

এখানে "myTable" -এর জায়গায় আপনার টেবিলের IDটি দিয়ে দিতে হবে। বুঝতেই পারছেন, আপনার টেবিলের একটি ID থাকতে হবে।

এরপরে, আপনার টেবিলের এন্ড ট্যাগের (</table> ট্যাগটির ) নিচে এই কোডটুকু যোগ করতে হবে:

<script type="text/javascript">
function filter(element, words)
{
    var table_to_be_filtered = document.getElementById(element);
    var table_rows = table_to_be_filtered.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    for (r = 0; r < table_rows.length; r++)
    {
        table_rows[r].style.display = "none";
        words_actual = words.toLowerCase();
        rows_text = table_rows[r].innerHTML;
        rows_text = rows_text.replace(/&amp;/g, "&");
        rows_text_actual = rows_text.toLowerCase();
        if(rows_text_actual.indexOf(words_actual) >= 0) table_rows[r].style.display = "table-row";

    }
}

function clear_filter(element)
{
    var table_to_be_filtered = document.getElementById(element);
    var table_rows = table_to_be_filtered.getElementsByTagName("tbody")[0].getElementsByTagName("tr");
    for (r = 0; r < table_rows.length; r++)
    {
        table_rows[r].style.display = "table-row";

    }
}

</script>

একটি ওয়ার্কিং ডেমো:
http://hostmarts.com/test/filter.html

দ্রষ্টব্য:
১. এখানে, "Filter" বাটনটি একটি বাহুল্যই বটে। কারণ, ফিল্টার বক্সে টাইপ করা মাত্রই ফিল্টার হয়ে যাচ্ছে। তবে, কোন কোন ব্রাউজার যদি "oninput" ইভেন্টটি সাপোর্ট না করে তাহলে এই "Filter" বাটনটি আবার প্রয়োজন হবে। অবশ্য "onkeyup" বা অন্য কীবোর্ড ইভেন্ট দিয়েও কাজ করা যায়। তবে, oninput-এর কিছু বাড়তি সুবিধা আছে।

২. প্রেফারেব্‌লী, হেডার/শিরোনাম রোটি <tbody> এলিমেন্টের ভেতরে না রেখে এর জন্য একটি <thead> এলিমেন্ট রাখবেন। নইলে, এটিও ফিল্টার-আউট হয়ে যাবে। এটা অবশ্য সমস্যা নয়, তবে দেখতে ভালো দেখাবে না অনেকের কাছে।

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

দারুণ একটা স্ক্রীপ্ট শেয়ারের জন্য রেপু নেন। কাজে লাগবে আমার।

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

টপিকা বেশ কাজের, ধন্যবাদ জেলাল ভাই ৷

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

সুন্দরভাবে প্র্যাকটিক্যাল প্রোজেক্ট দিয়ে বুঝিয়ে দেওয়ার জন্য অসংখ্য ধন্যবাদ  thumbs_up

"No ship should go down without her captain."

হৃদয়১'এর ওয়েবসাইট

লেখাটি LGPL এর অধীনে প্রকাশিত

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

একটা ইস্যু আছে। আগেও একই কথা বলেছিলাম আপনার অন্য একটা স্নিপ্ট দেখে।
আইডির চাইতে এলিমেন্ট রেফারেন্স ইউজ করুন। সবসময় সব এলিমেন্টের আইডি থাকবে এমন কোন কথা নেই। কোন table এলিমেন্টের id না থাকলে তখন কিনতু ঝামেলা হবে।  আপনার ফাংশনে ইউজ করার জন্য তখন id যোগ করতে হবে।
এটা একটা এক্সটার্নাল ডিপেনডেন্সি যুক্ত করে। এক্সিটিং কোডে ইন্টিগ্রেট করাও বেশ ঝামেলাপুর্ণ হবে। ডায়নামিক্যালি জেনারেটেড টেবিলে যদি এরকম ফিল্টার প্রয়োগ করতে যাই তখন আইডি বসাতে হবে। এই জন্য রেফারেন্স ইউজ করুন।

আগে ছিল

// Bad practice
function a(id){
    var el = document.getElementById(id);
}
a("someid");

এখন করবেন।

// Good practice
function a(element){
    var el = element;
}
var el = document.getElementById("someid");
a(el); // success
a(el.firstChild);  // success
a(el.parentNode);  // success


দুঃখিত! সমালোচনা করে ফেললাম। প্রাজন্মিকদের সমালোচোনা মোটেও পছন্দ না যদিও। তারা "কঠিন শেয়ার", "তুমুল টপিক", "ভাল জিনিষ" লিখতেই পছন্দ করে। চাইলে ওরকম একটা জেনেরিক রেসপন্সও দিতে পারি।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

সর্বশেষ সম্পাদনা করেছেন জেলাল (০৩-০৫-২০১৩ ০১:৪২)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

ধন্যবাদ forhan, ইলিয়াস ভাই, হৃদয়দা ও শিপলু ভাই।

শিপলু লিখেছেন:

দুঃখিত! সমালোচনা করে ফেললাম।

দুঃখিত হওয়ার কোন কারণ নেই শিপলু ভাই। সমালোচনা না পেলে শিখবো কিভাবে? blushing

আসলে আমি ডায়নামিক্যালি জেনারেটেড টেবিলের কথা চিন্তা করে এই স্ক্রীপ্টটি লিখিনি। smile

আপনার উদাহরণে অবশ্য শেষতক ID ব্যবহার হচ্ছেই দেখতে পাচ্ছি। আমার স্ক্রীপ্টটিতে যদি আপনার উদাহরণটি ইমপ্লিমেন্ট করতেন তাহলে একটু ক্লিয়ার হতে পারতাম। smile

আমি অবশ্য পরবর্তীতে document.getElementsByTagName("table")[x];-এই টাইপের কিছু দিয়ে এটাকে আরো ডায়নামিক করে ইউজারস্ক্রীপ্ট বানিয়ে শেয়ার করার কথা ভাবছিলাম। neutral

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

জেলাল লিখেছেন:

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

ব্যাপারটা এরকম।

১) একটা ফাংশন। যেটা ইনপুট হিসাবে গ্রহন করছে আইডি। তারপর উক্ত আইডির এলিমেন্টকে ব্যবহার করছে।

২) একটা ফাংশন। যেটা ইনপুট হিসাবে গ্রহন করছে এলিমেন্ট। তারপর উক্ত এলিমেন্টকে ব্যবহার করছে।


প্রথম ক্ষেত্রে ইউজার লিমিটেড হয়ে গেল। শুধুমাত্র আইডি জানা আছে এরকম টেস্ট কেসেই ব্যবহার যোগ্য।
২য় ক্ষেত্রে More freedom, আইডি দিয়ে এলিমেন্ট পাবে, নাকি ট্যাগ দিয়ে, নাকি ক্লাস দিয়ে, নাকি ডাইনামিক তৈরী করবে, স্বাধীনতা ইউজারের হাতে। ফলে আরো বেশি ক্ষেত্র জুরে আপনার ফাংশনটা ব্যবহারযোগ্যতা পাচ্ছে।

সারিম'এর ওয়েবসাইট

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

জেলাল লিখেছেন:

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

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

a(el.firstChild);  // success
a(el.parentNode);  // success

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

১০

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

ধন্যবাদ জেলাল ভাই ..স্ক্রিপ্ট গুলো কাজের....   smile
জাভাস্ক্রিপ্ট শিখব শিখব করছি...কিন্তু হচ্ছে না ।

১১

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

থ্যাংক্‌স @শিপলু ও সারিম।

এটা ঠিক যে একজন জাভাস্ক্রীপ্ট প্রোগ্রামারের পয়েন্ট অব ভিউ থেকে কোন ফাংশনে প্যারামিটার পাস করানোর জন্য কোন এলিমেন্টের আইডেন্টটিফায়িং প্রোপার্টি/এ্যাট্রিবিউট রেফার করার চেয়ে ওই এলিমেন্টকে রেফার করাটা সুবিধাজনক। এটা ফাংশনটির ইউজ্যাবিলিটি বাড়াবে নিঃসন্দেহে।

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

মতামতের জন্য দু'জনকেই অনেক ধন্যবাদ। thumbs_up

শিমুল লিখেছেন:

ধন্যবাদ জেলাল ভাই ..স্ক্রিপ্ট গুলো কাজের....   smile
জাভাস্ক্রিপ্ট শিখব শিখব করছি...কিন্তু হচ্ছে না ।

শিখে ফেলুন। মজার জিনিস। আমিও কিন্তু কমপ্লেক্স লেভেলে জানিনা।

১২

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

জাভাস্কৃপ্ট শেখার জন্য ২/৩ খানা বই নাড়াচাড়া করলাম কিছুদিন... তবে যেরকম লটরভটর মার্কা ভাষা worried

আমার কাছে বরং কফিস্কৃপ্ট চমৎকার লেগেছে love মাইক্রোসফটের টাইপস্কৃপ্ট-ও ভালোই। জাভাস্কৃপ্টে কনভার্ট না করে এগুলো সরাসরি রান করতে পারলে দারুণ হতো।

Calm... like a bomb.

১৩

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

invarbrass লিখেছেন:

জাভাস্কৃপ্ট শেখার জন্য ২/৩ খানা বই নাড়াচাড়া করলাম কিছুদিন... তবে যেরকম লটরভটর মার্কা ভাষা

বলেন কী ?  surprised surprised surprised surprised

সারিম'এর ওয়েবসাইট

লেখাটি CC by-nc-sa 3.0 এর অধীনে প্রকাশিত

১৪ সর্বশেষ সম্পাদনা করেছেন জেলাল (০৭-০৫-২০১৩ ১৭:৫৯)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

৪. এক কোটির নিচের সংখ্যাগুলোকে বাংলায় কথায় প্রকাশ করার ফাংশন

এই স্ক্রিপ্টটি ৯৯৯৯৯৯৯ ও এর নিচের সংখ্যাগুলোকে অংক থেকে বাংলায় কথায় প্রকাশ করতে সাহায্য করবে।

<script type="text/javascript">

function amt_word(number_to_be_in_word)
{
    len = number_to_be_in_word.length;
    var digit_array = [];
    for (d=0; d < len; d++)
    {
        digit_array.push(number_to_be_in_word.slice(d, d+1));
    }
    digit_array = digit_array.reverse();

    amt_word_string = "";
    for(d = 0; d < len; d++)
    {
        if(d == 0)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্য";
            if(digit_array[d] == "১") amt_word = "এক";
            if(digit_array[d] == "২") amt_word = "দুই";
            if(digit_array[d] == "৩") amt_word = "তিন";
            if(digit_array[d] == "৪") amt_word = "চার";
            if(digit_array[d] == "৫") amt_word = "পাঁচ";
            if(digit_array[d] == "৬") amt_word = "ছয়";
            if(digit_array[d] == "৭") amt_word = "সাত";
            if(digit_array[d] == "৮") amt_word = "আট";
            if(digit_array[d] == "৯") amt_word = "নয়";
            amt_word = amt_word.replace(/শূণ্য/g, "");
        }

        if(d == 1)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্যশ";
            if(digit_array[d] == "১") amt_word = "দশ";
            if(digit_array[d] == "২") amt_word = "বিশ";
            if(digit_array[d] == "৩") amt_word = "ত্রিশ";
            if(digit_array[d] == "৪") amt_word = "চল্লিশ";
            if(digit_array[d] == "৫") amt_word = "পঞ্চাশ";
            if(digit_array[d] == "৬") amt_word = "ষাট";
            if(digit_array[d] == "৭") amt_word = "সত্তর";
            if(digit_array[d] == "৮") amt_word = "আশি";
            if(digit_array[d] == "৯") amt_word = "নব্বই";
            amt_word = amt_word.replace (/শূণ্যশ/g, "");
        }

        if(d == 2)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্য শত";
            if(digit_array[d] == "১") amt_word = "এক শত";
            if(digit_array[d] == "২") amt_word = "দুই শত";
            if(digit_array[d] == "৩") amt_word = "তিন শত";
            if(digit_array[d] == "৪") amt_word = "চার শত";
            if(digit_array[d] == "৫") amt_word = "পাঁচ শত";
            if(digit_array[d] == "৬") amt_word = "ছয় শত";
            if(digit_array[d] == "৭") amt_word = "সাত শত";
            if(digit_array[d] == "৮") amt_word = "আট শত";
            if(digit_array[d] == "৯") amt_word = "নয় শত";
            amt_word = amt_word.replace (/শূণ্য শত/g, "");
        }

        if(d == 3)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্য হাজার";
            if(digit_array[d] == "১") amt_word = "এক হাজার";
            if(digit_array[d] == "২") amt_word = "দুই হাজার";
            if(digit_array[d] == "৩") amt_word = "তিন হাজার";
            if(digit_array[d] == "৪") amt_word = "চার হাজার";
            if(digit_array[d] == "৫") amt_word = "পাঁচ হাজার";
            if(digit_array[d] == "৬") amt_word = "ছয় হাজার";
            if(digit_array[d] == "৭") amt_word = "সাত হাজার";
            if(digit_array[d] == "৮") amt_word = "আট হাজার";
            if(digit_array[d] == "৯") amt_word = "নয় হাজার";
            amt_word = amt_word.replace (/শূণ্য/g, "");

        }

        if(d == 4)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্যশ";
            if(digit_array[d] == "১") amt_word = "দশ";
            if(digit_array[d] == "২") amt_word = "বিশ";
            if(digit_array[d] == "৩") amt_word = "ত্রিশ";
            if(digit_array[d] == "৪") amt_word = "চল্লিশ";
            if(digit_array[d] == "৫") amt_word = "পঞ্চাশ";
            if(digit_array[d] == "৬") amt_word = "ষাট";
            if(digit_array[d] == "৭") amt_word = "সত্তর";
            if(digit_array[d] == "৮") amt_word = "আশি";
            if(digit_array[d] == "৯") amt_word = "নব্বই";
            amt_word = amt_word.replace (/শূণ্যশ/g, "");
        }

        if(d == 5)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্য লক্ষ";
            if(digit_array[d] == "১") amt_word = "এক লক্ষ";
            if(digit_array[d] == "২") amt_word = "দুই লক্ষ";
            if(digit_array[d] == "৩") amt_word = "তিন লক্ষ";
            if(digit_array[d] == "৪") amt_word = "চার লক্ষ";
            if(digit_array[d] == "৫") amt_word = "পাঁচ লক্ষ";
            if(digit_array[d] == "৬") amt_word = "ছয় লক্ষ";
            if(digit_array[d] == "৭") amt_word = "সাত লক্ষ";
            if(digit_array[d] == "৮") amt_word = "আট লক্ষ";
            if(digit_array[d] == "৯") amt_word = "নয় লক্ষ";
            amt_word = amt_word.replace (/শূণ্য/g, "");

        }

        if(d == 6)
        {
            if(digit_array[d] == "০") amt_word = "শূণ্যশ";
            if(digit_array[d] == "১") amt_word = "দশ";
            if(digit_array[d] == "২") amt_word = "বিশ";
            if(digit_array[d] == "৩") amt_word = "ত্রিশ";
            if(digit_array[d] == "৪") amt_word = "চল্লিশ";
            if(digit_array[d] == "৫") amt_word = "পঞ্চাশ";
            if(digit_array[d] == "৬") amt_word = "ষাট";
            if(digit_array[d] == "৭") amt_word = "সত্তর";
            if(digit_array[d] == "৮") amt_word = "আশি";
            if(digit_array[d] == "৯") amt_word = "নব্বই";
            amt_word = amt_word.replace (/শূণ্যশ/g, "");
        }


        amt_word_string += amt_word + ",";
    }

    amt_word_string = amt_word_string.split(",");
    amt_word_string.reverse();
    amt_word_string2 = "";
    for (rd = 0; rd <= len; rd++)
    {
        amt_word_string2 += amt_word_string[rd] + "_";
    }

    amt_word_string2 = amt_word_string2.replace (/__ হাজার/g, "");
    amt_word_string2 = amt_word_string2.replace (/__/g, "_");

    amt_word_string3 = amt_word_string2.replace (/দশ_ হাজার/g, "দশ হাজার");

    amt_word_string3 = amt_word_string3.replace (/দশ_এক/g, "এগার");
    amt_word_string3 = amt_word_string3.replace (/দশ_দুই/g, "বারো");
    amt_word_string3 = amt_word_string3.replace (/দশ_তিন/g, "তেরো");
    amt_word_string3 = amt_word_string3.replace (/দশ_চার/g, "চৌদ্দ");
    amt_word_string3 = amt_word_string3.replace (/দশ_পাঁচ/g, "পনের");
    amt_word_string3 = amt_word_string3.replace (/দশ_ছয়/g, "ষোল");
    amt_word_string3 = amt_word_string3.replace (/দশ_সাত/g, "সতেরো");
    amt_word_string3 = amt_word_string3.replace (/দশ_আট/g, "আঠারো");
    amt_word_string3 = amt_word_string3.replace (/দশ_নয়/g, "উনিশ");
    amt_word_string3 = amt_word_string3.replace (/Onety/g, "দশ");

    amt_word_string3 = amt_word_string3.replace (/_/g, " ");

    amt_word_string3 = amt_word_string3.replace (/বিশ এক/g, "একুশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ দুই/g, "বাইশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ তিন/g, "তেইশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ চার/g, "চব্বিশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ পাঁচ/g, "পঁচিশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ ছয়/g, "ছাব্বিশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ সাত/g, "সাতাশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ আট/g, "আটাশ");
    amt_word_string3 = amt_word_string3.replace (/বিশ নয়/g, "উনত্রিশ");


    amt_word_string3 = amt_word_string3.replace (/ত্রিশ এক/g, "একত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ দুই/g, "বত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ তিন/g, "তেত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ চার/g, "চৌ্ত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ পাঁচ/g, "পঁয়ত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ ছয়/g, "ছয়ত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ সাত/g, "সাঁইত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ আট/g, "আটত্রিশ");
    amt_word_string3 = amt_word_string3.replace (/ত্রিশ নয়/g, "উনচল্লিশ");


    amt_word_string3 = amt_word_string3.replace (/চল্লিশ এক/g, "একচল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ দুই/g, "বিয়াল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ তিন/g, "তেতাল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ চার/g, "চুয়াল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ পাঁচ/g, "পঁয়তাল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ ছয়/g, "ছেচল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ সাত/g, "সাতচল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ আট/g, "আটচল্লিশ");
    amt_word_string3 = amt_word_string3.replace (/চল্লিশ নয়/g, "উনপঞ্চাশ");


    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ এক/g, "একান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ দুই/g, "বায়ান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ তিন/g, "তিপ্পান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ চার/g, "চুয়ান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ পাঁচ/g, "পঞ্চান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ ছয়/g, "ছাপ্পান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ সাত/g, "সাতান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ আট/g, "আটান্ন");
    amt_word_string3 = amt_word_string3.replace (/পঞ্চাশ নয়/g, "উনষাট");


    amt_word_string3 = amt_word_string3.replace (/ষাট এক/g, "একষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট দুই/g, "বাষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট তিন/g, "তেষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট চার/g, "চৌষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট পাঁচ/g, "পঁয়ষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট ছয়/g, "ছেষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট সাত/g, "সাতষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট আট/g, "আটষট্টি");
    amt_word_string3 = amt_word_string3.replace (/ষাট নয়/g, "উনসত্তর");


    amt_word_string3 = amt_word_string3.replace (/সত্তর এক/g, "একাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর দুই/g, "বাহাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর তিন/g, "তিহাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর চার/g, "চুয়াত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর পাঁচ/g, "পঁচাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর ছয়/g, "ছিয়াত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর সাত/g, "সাতাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর আট/g, "আটাত্তর");
    amt_word_string3 = amt_word_string3.replace (/সত্তর নয়/g, "উনআশি");


    amt_word_string3 = amt_word_string3.replace (/আশি এক/g, "একাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি দুই/g, "বিরাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি তিন/g, "তিরাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি চার/g, "চুরাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি পাঁচ/g, "পঁচাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি ছয়/g, "ছিয়াশি");
    amt_word_string3 = amt_word_string3.replace (/আশি সাত/g, "সাতাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি আট/g, "আটাশি");
    amt_word_string3 = amt_word_string3.replace (/আশি নয়/g, "উননব্বই");


    amt_word_string3 = amt_word_string3.replace (/নব্বই এক/g, "একানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই দুই/g, "বিরানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই তিন/g, "তিরানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই চার/g, "চুরানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই পাঁচ/g, "পঁচানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই ছয়/g, "ছিয়ানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই সাত/g, "সাতানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই আট/g, "আটানব্বই");
    amt_word_string3 = amt_word_string3.replace (/নব্বই নয়/g, "নিরানব্বই");


    return amt_word_string3;

}

</script>

ডেমো:

http://hostmarts.com/test/amount_in_word_bangla.php

আমাকে একটু ফেভর করতে হবে। উপরের ডেমো পেইজে randomly কিছু সংখ্যা (৯৯৯৯৯৯৯ ও এর নিচের ) টেস্ট করে যদি কোন ভুল পেয়ে থাকেন তাহলে একটু report back করলে খুশি হবো।

১৫

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

nailbiting জাভাস্ক্রিপ্ট চলে ক্লায়েন্ট এন্ডে। ভারিয়েবল গুলো আরেকটু ছোট করলে ভাল হত। ভেরিয়েবলের জন্য প্রায় ২-৩ কিলোবাইট এক্সটা নষ্ট হবে।

এর চাইতে কি আরও ভাল ভাবে করা যায় না?

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

১৬ সর্বশেষ সম্পাদনা করেছেন জেলাল (০৭-০৫-২০১৩ ১৮:১৭)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

আসলে, মূল কোডটা করেছিলাম পিএইচপিতে আমাদের কোম্পানীর ক্লায়েন্টদের ইনভয়েসগুলোর টোটাল পেয়েবল এ্যামাউন্টকে ইংরেজিতে কথায় প্রকাশ করার জন্য। সেটাকে খেলার ছলে গুতাগুতি করে আজকে জাভাস্ক্রীপ্ট ও বাংলা সংখ্যার জন্য করলাম। ইংরেজির চেয়ে বাংলার জন্য করা একটু বেশি ঝামেলার। ‌ওয়ার্ডে ইংরেজি সংখ্যাগুলোর একটা প্যাটার্ণ আছে। যেমন: Forty One, Forty Two......। কিন্তু বাংলায় এটা একচল্লিশ, দুইচল্লিশ.... না হয়ে একচল্লিশ, বিয়াল্লিশ... এরকম। মিল খুবই কম।

আরো ভালোভাবে করা সম্ভব, তবে ধৈর্য্যের একটা ব্যাপার আছে। tongue ওই বস্তু আমার মধ্যে তেমন একটা নেই। blushing

১৭

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

জেলাল লিখেছেন:

আসলে, মূল কোডটা করেছিলাম পিএইচপিতে আমাদের কোম্পানীর ক্লায়েন্টদের ইনভয়েসগুলোর টোটাল পেয়েবল এ্যামাউন্টকে ইংরেজিতে কথায় প্রকাশ করার জন্য। সেটাকে খেলার ছলে গুতাগুতি করে আজকে জাভাস্ক্রীপ্ট ও বাংলা সংখ্যার জন্য করলাম। ইংরেজির চেয়ে বাংলার জন্য করা একটু বেশি ঝামেলার। ‌ওয়ার্ডে ইংরেজি সংখ্যাগুলোর একটা প্যাটার্ণ আছে। যেমন: Forty One, Forty Two......। কিন্তু বাংলায় এটা একচল্লিশ, দুইচল্লিশ.... না হয়ে একচল্লিশ, বিয়াল্লিশ... এরকম।

আরো ভালোভাবে করা সম্ভব, তবে ধৈর্য্যের একটা ব্যাপার আছে। tongue ওই বস্তু আমার মধ্যে তেমন একটা নেই। blushing

এই কোড পিএইচপিতে লিখুন আর পাইথনে লিখুন, এলগোরিদম তো আর পরিবর্তন হবে না। সমস্যাটা এলগোতে। ওটা খুব একটা সুবিধার না।

Feed থেকে ফোরাম সিগনেচার, imgsign.com
ব্লগ: shiplu.mokadd.im
মুখে তুলে কেউ খাইয়ে দেবে না। নিজের হাতেই সেটা করতে হবে।

শিপলু'এর ওয়েবসাইট

লেখাটি GPL v3 এর অধীনে প্রকাশিত

১৮ সর্বশেষ সম্পাদনা করেছেন জেলাল (০৭-০৫-২০১৩ ২০:৩৫)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

হুম, এলগরিদমের প্যাটার্ণটা দেখতে কিছুটা বিচ্ছিরি। smile ইয়ে মানে, আপনার হাতে সময় থাকলে একটু ঘষামাজা করে আরেকটু ক্লীন একটা ভার্শণ শেয়ার করুন না। hug সাথে, ৯৯৯৯৯৯৯-এর উপরের সংখ্যার জন্যও। smile

১৯ সর্বশেষ সম্পাদনা করেছেন জেলাল (১৫-০৬-২০১৩ ১৬:২৩)

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

৫. টেবিলের কলাম/রো লুকানো ও প্রদর্শণ করার জাভাস্ক্রীপ্ট

ধরুণ, আপনার ওয়েবপেইজে তথ্যসম্বলিত কিছু সহজ-সরল টেবিল আছে। আপনি চাচ্ছেন আপনার ভিজিটরকে এমন সুবিধা দিতে যাতে তারা যে কোন টেবিলের কলাম বা সারিগুলোকে লুকিয়ে রাখতে পারে কিংবা লুকিয়ে রাখা কলাম/সারিকে আবার পরে দৃশ্যমান করতে পারে। এরকম সুবিধা দিতেই এই জাভাস্ক্রীপ্টটি লিখলাম।

পেইজের উপরে ডানদিকের "Show hide/unhide options for tables' columns/rows" চেকবক্সটি চেক করলে এটি স্বয়ংক্রিয়ভাবে আপনার ওয়েবপেইজের সব কটি টেবিলের হেডার রো ও সর্ববামের কলামে কিছু নোড যুক্ত করবে যাতে আপনি কোন নির্দিষ্ট কলাম কিংবা রো হাইড করতে পারেন। আবার, একটি কলাম হাইড করার পরে টেবিলের উপরে ওই কলামটিকে পুণঃপ্রদর্শনের জন্য একটি নোড যুক্ত হয়ে যাবে। তেমনি, কোন রো'কে হাইড করার পরে ওই রো'-এর উপরের রো'তে একটি নোড যুক্ত হবে যাতে পরবর্তী লুকিয়ে থাকা রো'টিকে পুণঃপ্রদর্শণ করা যায়।

অনেকগুলো লুকিয়ে রাখা কলাম কিংবা সারিকে একসাথে প্রদর্শণ করার জন্যও নোড থাকবে।

নোড লিজেন্ড:
(-C) : এই কলামটিকে লুকিয়ে ফেলো
(+something) : লুকিয়ে থাকা something কলামকে প্রদর্শণ কর
+All_Columns : লুকিয়ে থাকা সব কলামকে প্রদর্শণ কর
(-R) : এই রো'টিকে লুকিয়ে ফেলো
(+R) : লুকিয়ে থাকা পরবর্তী রো'টিকে প্রদর্শণ কর
+All_Rows : লুকিয়ে থাকা সব রো'কে প্রদর্শণ কর

স্ক্রীপ্টটি ব্যবহার:
আপনার ওয়েবপেইজের body ট্যাগের আগে এটি যোগ করুন।

স্ক্রীপ্ট:

<script type="text/javascript">
myTime = new Date().getTime();

myHead = document.getElementsByTagName("head")[0];
myStyle = document.createElement("style");
myStyle.type = "text/css";
myCSS_className = "noPrint_" + myTime;
myCSS =  "@media print { ." + myCSS_className + " { display:none; } }";
myCSSElement = document.createTextNode(myCSS);
myStyle.appendChild(myCSSElement);

myHead.appendChild(myStyle);

hd_uhd_c_r_node = document.createElement("div");
hd_uhd_c_r_node.style.position = "fixed";
hd_uhd_c_r_node.className = myCSS_className;
hd_uhd_c_r_node.style.top = "0";
hd_uhd_c_r_node.style.right = "0";
hd_uhd_c_r_node.style.width = "250px";
hd_uhd_c_r_node.style.height = "20px";
hd_uhd_c_r_node.innerHTML = "<input type='checkbox' id = 'hd_uhd_c_r_cb' /><label for='hd_uhd_c_r_cb' style='font-size:.85em;color:green'>Show hide/unhide options for tables' columns/rows</label>";

document.body.appendChild(hd_uhd_c_r_node);

document.getElementById("hd_uhd_c_r_cb").onclick = function()
{
    if(this.checked == true)
    {

        myTables = document.getElementsByTagName("table");

        for (t = 0; t < myTables.length; t++)
        {
            myCurrentTable = myTables[t];

            nodesParent = document.createElement("div");
            nodesParent.id = "nP_" + t;
            nodesParent.className = myCSS_className;
            myTables[t].parentNode.insertBefore(nodesParent, myTables[t])

            nodesParent2 = document.createElement("div");
            nodesParent2.id = "nP2_" + t;
            nodesParent2.className = myCSS_className;
            myTables[t].parentNode.insertBefore(nodesParent2, myTables[t])

            uDelACNode = document.createElement("a");
            uDelACNode.id = "uDAC_" + t;
            uDelACNode.style.fontWeight = "bold";
            uDelACNode.style.color = "green";
            uDelACNode.className = myCSS_className;
            uDelACNode.style.cursor = "pointer";
            uDelACNode.innerHTML = "+All_Columns";
            uDelACNode.title = "Unhide all hidden columns";
            uDelACNode.onclick = function()
            {
                uDelACNode_PTIndex = this.id.split("_")[1];
                uDelACNode_PTRows = document.getElementsByTagName("table")[uDelACNode_PTIndex].getElementsByTagName("tr");
                for(ACR = 0; ACR < uDelACNode_PTRows.length; ACR++)
                {
                    colNum = uDelACNode_PTRows[ACR].cells.length;
                    for(CN = 0; CN < colNum; CN++)
                    {
                        uDelACNode_PTRows[ACR].cells[CN].style.display = "table-cell";
                    }
                }
                parent_Sibling_ID = this.id.replace(/uDAC_/, "nP2_");
                document.getElementById(parent_Sibling_ID).innerHTML = "";
            }
            nP_ID = "nP_" + t;
            document.getElementById(nP_ID).appendChild(uDelACNode)

            myFirstRow = myCurrentTable.getElementsByTagName("tr")[0];
            myTH = myFirstRow.cells;
            for(i = 0; i < myTH.length; i++)
            {
                delNode = document.createElement("span");
                delNode.style.fontSize = ".6em";
                delNode.style.color = "red";
                delNode.style.cursor = "pointer";
                delNode.style.fontFamily = "verdana,arial";
                delNode.innerHTML = "<sup>(-C)</sup>";
                delNode.title = "Hide this column";
                delNode.className = myCSS_className;
                delNode.id = "DN_" + t + "_" + i;
                delNode.onclick = function()
                {
                    myColumnIndex = this.parentNode.cellIndex;
                    myID = this.id;
                    myColumnHeading = this.parentNode.innerHTML.split(this.outerHTML)[0];
                    if(this.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE")
                    {
                        parentTable = this.parentNode.parentNode.parentNode.parentNode;
                        myRows = parentTable.getElementsByTagName("tr");
                    }
                    else if(this.parentNode.parentNode.parentNode.nodeName == "TABLE")
                    {
                        parentTable = this.parentNode.parentNode.parentNode;
                        myRows = parentTable.getElementsByTagName("tr");
                    }
                    for(j = 0; j < myRows.length; j++)
                    {
                        myRows[j].cells[myColumnIndex].style.display = "none";
                    }
                    unDelNode = document.createElement("a");
                    unDelNode.innerHTML = "(+<b>" + myColumnHeading + "</b>)";
                    unDelNode.title = "Unhide column \"" + myColumnHeading + "\"";
                    unDelNode.style.color = "green";
                    unDelNode.id = "uDN_to|" + myID;
                    unDelNode.style.marginRight = "20px";
                    unDelNode.style.cursor = "pointer";
                    unDelNode.className = myCSS_className;
                    unDelNode.setAttribute("this_index", myColumnIndex);
                    unDelNode.setAttribute("this_DN_ID", myID);
                    unDelNode.onclick = function()
                    {
                        this_DN_ID = this.getAttribute("this_DN_ID");
                        if(document.getElementById(this_DN_ID).parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            parentTableRows = document.getElementById(this_DN_ID).parentNode.parentNode.parentNode.parentNode.getElementsByTagName("tr");
                        }
                        else if(document.getElementById(this_DN_ID).parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            parentTableRows = document.getElementById(this_DN_ID).parentNode.parentNode.parentNode.getElementsByTagName("tr");
                        }
                        thisIndex = this.getAttribute("this_index");
                        for(k = 0; k < parentTableRows.length; k++)
                        {
                            parentTableRows[k].cells[thisIndex].style.display = "table-cell";
                        }
                        this.parentNode.removeChild(this);
                    }
                    nP2_ID = "nP2_" + this.id.split("_")[1];
                    document.getElementById(nP2_ID).appendChild(unDelNode);
                }
                myTH[i].appendChild(delNode);

                thisOriginalHTML = "";
                if(myTH[i].style.display == "none")
                {
                    thisChildSpans = myTH[i].getElementsByTagName("span");
                    for(tCS = 0; tCS < thisChildSpans.length; tCS++)
                    {
                        if(thisChildSpans[tCS].className == myCSS_className)
                        {
                            thisOriginalHTML = myTH[i].innerHTML.split(thisChildSpans[tCS].outerHTML)[0];
                            //alert(thisOriginalHTML + " which has an column index of " + i + "within the table with index " + t);
                        }
                    }
                    thisOriginalHTML = thisOriginalHTML;

                    existing_unDelNode = document.createElement("a");
                    existing_unDelNode.innerHTML = "(+<b>" + thisOriginalHTML + "</b>)";
                    existing_unDelNode.title = "Unhide column \"" + myColumnHeading + "\"";
                    existing_unDelNode.style.color = "green";
                    existing_unDelNode.id = "uDN_to|" + "DN_" + t + "_" + i;
                    existing_unDelNode.style.marginRight = "20px";
                    existing_unDelNode.style.cursor = "pointer";
                    existing_unDelNode.className = myCSS_className;
                    existing_unDelNode.setAttribute("this_index", i);
                    existing_unDelNode.setAttribute("this_DN_ID", "DN_" + t + "_" + i);
                    existing_unDelNode.onclick = function()
                    {
                        existing_this_DN_ID = this.getAttribute("this_DN_ID");
                        if(document.getElementById(existing_this_DN_ID).parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            parentTableRows = document.getElementById(existing_this_DN_ID).parentNode.parentNode.parentNode.parentNode.getElementsByTagName("tr");
                        }
                        else if(document.getElementById(existing_this_DN_ID).parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            parentTableRows = document.getElementById(existing_this_DN_ID).parentNode.parentNode.parentNode.getElementsByTagName("tr");
                        }
                        existing_thisIndex = this.getAttribute("this_index");
                        for(k = 0; k < parentTableRows.length; k++)
                        {
                            parentTableRows[k].cells[existing_thisIndex].style.display = "table-cell";
                        }
                        this.parentNode.removeChild(this);
                    }


                    this_nP2_ID = "nP2_" + t;
                    document.getElementById(this_nP2_ID).appendChild(existing_unDelNode);

                }




            }


            myRows = myCurrentTable.getElementsByTagName("tr");

            uDelARNode = document.createElement("span");
            uDelARNode.style.fontSize = ".6em";
            uDelARNode.style.color = "green";
            uDelARNode.id = "uDAR|" + t;
            uDelARNode.style.cursor = "pointer";
            uDelARNode.innerHTML = "<sub>(+All_Rows) </sub>";
            uDelARNode.title = "Unhide all hidden rows";
            uDelARNode.className = myCSS_className;

            uDelARNode.onclick = function()
            {
                if(this.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE")
                {
                    myPTRows = this.parentNode.parentNode.parentNode.parentNode.getElementsByTagName("tr");
                }
                else if(this.parentNode.parentNode.parentNode.nodeName == "TABLE")
                {
                    myPTRows = this.parentNode.parentNode.parentNode.getElementsByTagName("tr");
                }
                for(PTR = 0; PTR < myPTRows.length; PTR++)
                {
                    if(myPTRows[PTR].style.display == "none") myPTRows[PTR].style.display = "table-row";
                    mySpans = myPTRows[PTR].cells[0].getElementsByTagName("span");
                    for(MS = 0; MS < mySpans.length; MS++)
                    {
                        if(mySpans[MS].id.indexOf("uDRN_") == 0) mySpans[MS].parentNode.removeChild(mySpans[MS]);
                    }
                }

            }
            myRows[0].cells[0].appendChild(uDelARNode);

            for(R = 0; R < myRows.length; R++)
            {
               myRowsFirstCell = myRows[R].cells[0];
                delRNode = document.createElement("span");
                delRNode.style.fontSize = ".6em";
                delRNode.style.color = "red";
                delRNode.style.cursor = "pointer";
                delRNode.innerHTML = "<sup>(-R)</sup>";
                delRNode.title = "Hide this row";
                delRNode.className = myCSS_className;
                delRNode.id = "DRN_" + t + "|" + R;

                delRNode.onclick = function()
                {
                    this.parentNode.parentNode.style.display = "none";

                    this_PTIndex = (this.id.split("|")[0]).split("_")[1];
                    thisRDelNode_ID_first = this.id.split("|")[0];
                    thisRDelNode_ID_last = this.id.split("|")[1];
                    previousRUDelNode_ID_last = Number(thisRDelNode_ID_last) - 1;
                    previousRDelNode_ID = "DRN_" + this_PTIndex + "|" + previousRUDelNode_ID_last;
                    previousRUDelNode_ID = "uDRN_" + this_PTIndex + "|" + previousRUDelNode_ID_last;

                    uDelRNode = document.createElement("span");
                    uDelRNode.style.fontSize = ".6em";
                    uDelRNode.style.color = "green";
                    uDelRNode.style.cursor = "pointer";
                    uDelRNode.innerHTML = "<br /><sub>(+R)</sub>";
                    uDelRNode.title = "Unhide  next hidden row";
                    uDelRNode.className = myCSS_className;
                    if(this.parentNode.parentNode.rowIndex == 1)
                    {
                        uDelRNode.id = "uDRN_" + this_PTIndex + "|" + 0;
                    }
                    else
                    {
                        uDelRNode.id = "uDRN_" + this_PTIndex + "|" + previousRUDelNode_ID_last;
                    }

                    uDelRNode.onclick = function()
                    {
                        thisRUDelNode_ID_first = this.id.split("|")[0];
                        thisRUDelNode_ID_last = this.id.split("|")[1];
                        nextRUDelNode_ID_last = Number(thisRUDelNode_ID_last) + 1;
                        document.getElementById("DRN_" + this_PTIndex + "|" + nextRUDelNode_ID_last).parentNode.parentNode.style.display = "table-row";
                        this.parentNode.removeChild(this);
                    }
                    if(this.parentNode.parentNode.rowIndex == 1)
                    {
                        uDAR_nodeId = "uDAR|" + this_PTIndex;
                        document.getElementById(uDAR_nodeId).parentNode.appendChild(uDelRNode);
                    }
                    else
                    {
                        document.getElementById(previousRDelNode_ID).parentNode.appendChild(uDelRNode);
                    }



                }
                if(R > 0) myRowsFirstCell.appendChild(delRNode);
                if(myRows[R].style.display == "none")
                {
                    existing_uDelRNode = document.createElement("span");
                    existing_uDelRNode.style.fontSize = ".6em";
                    existing_uDelRNode.style.color = "green";
                    existing_uDelRNode.style.cursor = "pointer";
                    existing_uDelRNode.innerHTML = "<br /><sub>(+R)</sub>";
                    existing_uDelRNode.title = "Unhide  next hidden row";
                    existing_uDelRNode.className = myCSS_className;

                    existing_uDelRNode.id = "uDRN_" + t + "|" + (myRows[R].rowIndex - 1);

                    existing_uDelRNode.onclick = function()
                    {
                        if(this.parentNode.parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            this_parentTable = this.parentNode.parentNode.parentNode.parentNode;
                        }
                        else if(this.parentNode.parentNode.parentNode.nodeName == "TABLE")
                        {
                            this_parentTable = this.parentNode.parentNode.parentNode;
                        }
                        nextRUDel_index = Number(this.id.split("|")[1]) + 1;
                        this_parentTable.getElementsByTagName("tr")[nextRUDel_index].style.display = "table-row";
                        this.parentNode.removeChild(this);
                    }
                    myRows[R-1].cells[0].appendChild(existing_uDelRNode);


                }



            }

        }
    }
    if(this.checked == false)
    {
        hd_uhd_nodes = document.getElementsByClassName(myCSS_className);
        //alert(hd_uhd_nodes.length);
        for (huhdn = hd_uhd_nodes.length - 2; huhdn > -1; huhdn--)
        {
            hd_uhd_nodes[huhdn].parentNode.removeChild(hd_uhd_nodes[huhdn]);
        }
    }
}
</script>

স্ক্রীপ্ট ডেমো:
http://hostmarts.com/projanmo/hide_c_r.html

২০

Re: কিছু ছোটখাট জাভাস্ক্রীপ্ট

কয়দিন আগে এইটাইপ একটা কাজ করছিলাম, পিএইচপি দিয়া! :v
সো এইজার ইন্টারএকশনের কিছুই ছিলো না। দেখি এবার ওটায় এটা দিয়ে একটু টাচ দিতে পারি কিনা!