15 августа 2008-го

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

15 августа 2008, 11:42

getElementById IE BUG Избранное

var $ = function (id, doc) {
	if((id)&&((typeof id == "string")||(id instanceof String) ) ){
		if (!doc) { doc = document; }
		var ele = doc.getElementById(id);
		// workaround bug in IE and Opera 8.2 where
		// getElementById returns wrong element
		if (ele && (ele.id != id) && doc.all) {
			ele = null;
			// get all matching elements with this id
			eles = doc.all[id];
			if (eles) {
				// if more than 1, choose first
 				// with the correct id
				if (eles.length) {
					for (var i=0; i < eles.length; i++) {
						if (eles[i].id == id) {
							ele = eles[i];
							break;
						}
					}
				} // return 1 and only element
				else { ele = eles; }
			}
		}return ele;
	}return id; // assume it's a node
}

Теперь вместо doucment.getElementById(«somekrap») пишешь $(«somekrap») устраняет много проблем, когда голимый ИЕ не видит Элемент по названию айди. Вернее он выберает не по Id а по Name

Ещё одна прелесть этого скрипта, можно сразу указать другой тип Документа, например iframe
var myIFrame = $("iframe_id").contentWindow.document;  
var div4id = $("div_from_frame",myIFrame).innerHTML;



Ужатый вариант:

15 августа 2008, 10:59

setAttribute(«class») не работает в ИЕ (Internet Explorer)

JavaScript setAttribute «class» not work in IE
//Хорошо работает везде, кроме ИЕ - good for all but not IE
setAttribute(class‘, ‘value);
//в ИЕ работает вот так - IE only
setAttribute(className‘, ‘value);
//везде работает вот так ;) - good for all browsers
someElement.className = ‘value’; 
22 июля 2008-го  . . .       Ctrl       . . .  24 августа 2008-го