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;



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

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter