包含jsnochange的詞條

本文目錄一覽:

js判斷table元素中元素值是否改變,若未改變返回false, table中包含input和select元素,貼段代碼上來

你的追問裏面的代碼,去掉第一個return false;這一句在循環裏面,基本上都能執行到的,你自己想想。另外,你的function的{}沒匹配,最後漏了},在check_change最後加多一個return true,默認有變化,因為你前面做了所有變化情況的判斷,返回false,只要它能執行到最後,就一定是有變化了。

下面是修改:

function check_change() {

var inplen = document.getElementById(“table”).getElementsByTagName(“input”).length;

var input = document.getElementById(“table”).getElementsByTagName(“input”);

var customer = document.getElementById(“customer”);

var curCR = customer.options[customer.options.selectedIndex].value;

var remark = document.getElementById(“remark”);

for (var a = 0; a inplen; a++) {

//有變化立刻返回true

if (input[a].value != input[a].defaultValue) {

return true;

}

//return false;

}

//到這裡,全部都沒變化了,返回false

if (customer[0].value == curCR remark.value == remark.defaultValue) {

alert(“No change to save !”);

return false;

}

//上面都跑過,那就是有變化了

return true;

} //你漏了這個

No change是什麼意思及反義詞

no change

[詞典] 無變化; 縮寫詞為NA;

[例句]I have told them with absolute certainty there’ll be no change of policy

我已經十分肯定地告訴他們,政策不會變。

我自己寫的JS函數:為什麼無法響應點擊事件呢?

onload = *而不是onload()=*

在有些瀏覽器,腳本是和正文分開加載的,你這個document.getElementsByTagName(“input”);返回有可能沒有值,

首先寫一個簡單的ready函數

// 只接受函數作為參數,每調用一次,存一個函數,當頁面載完,一次自動執行

// ready(yourfunction)

var ready=(function () {

        var isReady = false,

            funList = [];

        function r(fn) {

            typeof fn !== “function” || (isReady ? fn() : funList.push(fn))

        }

        function readyCall() {

            isReady = true;

            while (funList.length) {

                funList.shift()()

            }

        }

        if (document.addEventListener) {

            document.addEventListener(“DOMContentLoaded”, function () {

                document.removeEventListener(“DOMContentLoaded”, arguments.callee, false);

                readyCall()

            }, false)

        } else if (document.attachEvent) {

            document.attachEvent(“onreadystatechange”, function () {

                if (document.readyState === “complete”) {

                    document.detachEvent(“onreadystatechange”, arguments.callee);

                    readyCall()

                }

            })

        }

        return r

    }

        () )

再寫一個綁定事件的函數

/**

 * bind(target, event name, event function)

 * bind(控件,事件名稱(如”click”不帶on),事件函數)

 * 注意,事件函數,就算在ie,也會強推一個event作為第一個參數

 * 為了兼容舊版本瀏覽器,preventDefault preventDefault 簡單的寫了些,不夠完 

 * 還望海涵

 */    

var bind = function (el, name, fn) {

    if (el.addEventListener) {

        el.addEventListener(name, fn);

    } else {

        name = “on” + name;

        if (el.attachEvent) {

            el.attachEvent(name, function () {

                var args = Array.prototype.slice.call(arguments), ret = true;

                if (window.event) {

                    args.unshift(window.event);

                    if (!event.preventDefault)

                        event.preventDefault = function () {

                            ret = false;

                        };

                    if (!event.stopPropagation)

                        event.stopPropagation = function () {

                            event.cancelBubble = true;

                        };

                }

                fn.apply(this, args);

                return ret;

            });

        } else {

            var old = el[name], noFunc = typeof old !== “function”, noList = noFunc || !old.list, call;

            if (noList) {

                call = el[name] = function (event) {

                    var list = call.list, l = list.length,

                            args = Array.prototype.slice.call(arguments), ie = !!window.event,

                            ret = true, run = true;

                    if (!event.preventDefault)

                        event.preventDefault = function () {

                            ret = false;

                        };

                    if (!event.stopPropagation)

                        event.stopPropagation = function () {

                            run = false;

                        };

                    if (ie)args.unshift(event);

                    while (l–  run)

                        list[i].apply(this, args);

                    return ret;

                };

                call.list = [];

                if (!noFunc)call.list.push(old);

            }

            call.list.push(fn);

        }

    }

};

時間關係,沒寫解綁函數

再來一個尋找控件的函數

    /**

     * trans(“#id”) trans(“.class”) trans(“$name”) trans(“tagName”)

     */

    function trans(el){

        var c;

        c = el.charAt(0);

        c = c.match(/^[#\.\$]/)?c:””;

        return typeof el===”object” 

                Object.prototype.toString.call(el).match(/\[object HTML.*Element\]/)?el

                : typeof el===”string” 

                (el=(document[

                        [“getElementById”,”getElementsByClassName”,”getElementsByName”,”getElementsByTagName”]

                                [{“#”:0,”.”:1,”$”:2,””:3}[c]]])(el.substring(c?1:0)),c?[el]:el.length)?el:null;

    }

然後再輕鬆的綁定事件

    ready(function(){

        var fruit = trans(“input”);

        //初始化

        for(var i=0;ifruit.length-4;i=i+2)

            fruit[i+1].disabled=”disabled”;

        

        //添加事件

        for(var i=0;ifruit.length-4;i=i+2)

        

            bind(fruit[i],”click”,(function(fruit,value){

                return function(event){

                    if(fruit.id === value)fruit.removeAttribute(“disabled”);

                };             

            }(fruit[i],fruit[i].value)));//注意,這裡直接把fruit[i].value,和fruit[i]傳給事件閉包,就不容易和其他變量混淆了。

    });

原創文章,作者:XIIT,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/150077.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XIIT的頭像XIIT
上一篇 2024-11-07 09:49
下一篇 2024-11-07 09:49

相關推薦

發表回復

登錄後才能評論