本文目錄一覽:
- 1、js判斷table元素中元素值是否改變,若未改變返回false, table中包含input和select元素,貼段代碼上來
- 2、No change是什麼意思及反義詞
- 3、我自己寫的JS函數:為什麼無法響應點擊事件呢?
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