2009年6月10日 星期三

在IE與FF的一些設計限制(設定css屬性、註冊事件、checkbox)

在FF與其他瀏覽器(不含IE)

1.若要設定元素的class屬性,可以用 setAttribute方法來設定,如下
var inputElmt = document.createElement('input');
inputElmt.setAttribute('class', 'column');

但IE不吃這套,而吃 className 屬性名稱,如下
inputElmt.setAttribute('className', 'column');

所以 ~完整解決方法
var inputElmt = document.createElement('input');
inputElmt.setAttribute('className', 'column'); 
inputElmt.setAttribute('class', 'column');

寫上兩個~不需要另外辨別瀏覽器!


2.若要為其加入事件
if(document.all) //for IE
{
inputElmt.onclick = function(){ pantosetedArea(this.value) ; };
}
else inputElmt.setAttribute('onClick', "pantosetedArea(this.value)");

其中pantosetedArea(參數)是自訂函式

3.另外,若要產生預設勾選的checkbox

function createInputcheck(elmtName,elmtValue) {

elmtName = elmtName ? elmtName : '';
elmtValue = elmtValue ? elmtValue : 'yes';
var ischecked = (elmtValue=='0')? "false" : "true" ;

var inputElmt = document.createElement('input');
inputElmt.setAttribute('type', 'checkbox');
inputElmt.setAttribute('name', elmtName);
inputElmt.setAttribute('value', elmtValue);
if(elmtValue=="yes") inputElmt.setAttribute('checked', ischecked);
inputElmt.setAttribute('onClick', "checkSMS(this)")
inputElmt.setAttribute('class', 'column');
return inputElmt;
}
var sendSMSInput = createInputcheck('sSMS');
var contentTdM = document.createElement('td');
contentTdM.appendChild(sendSMSInput);

var contentTr = document.createElement('tr');
contentTr.appendChild( contentTdM );

sendSMSInput.setAttribute('checked', true);

在FF中,函式中的此行 if(elmtValue=="yes") inputElmt.setAttribute('checked', ischecked);會馬上成立,但在IE中,要為checkbox 賦值,必須等到 appendchild後才可以操作checkbox 賦值

沒有留言:

張貼留言

try comments