|
Mar. 27th, 2008|10:04 pm |
Узнал много нового. for-in не даются. У меня так:
function TranslitToRus (s) {
if (s == 'Date:') return '\u0414\u0430\u0442\u0430:'; // return s; is worse, because even kaledins may write " Date: "
var res = "", len = s.length;
for (var f = 0; f < len; f++) {
var n = s.charAt(f);
var rus = trTable[n], dif = trTableDif[n];
if (dif) {
var n1 = s.charAt(f+1);
rus1 = dif[n1];
if (rus1) { rus = rus1; f++; }
}
res += rus?rus:n;
}
return res;
}
function DeKaledin(evt)
{
evt.preventDefault();
if (loadingPages) return false;
var ec = evt.currentTarget; // comment or text ?br?
var i = ec.childNodes[0]; //
var t = ec.childNodes[1]; // comment or text
var w = ec.childNodes[2]; // if exists
var v = doc.createElement("img");
v.setAttribute("width","22");
v.setAttribute("height","20"); // if pictures are not loaded
var u,v;
if (t.nodeName == "#comment")
{
v.setAttribute("src","http://lj.rossia.org/img/btn_prev.gif");
u = doc.createTextNode(t.nodeValue);
}
else // #text
{
v.setAttribute("src","http://lj.rossia.org/img/btn_next.gif");
u = doc.createComment(t.nodeValue);
}
ec.appendChild(v);
ec.appendChild(u);
if (w)
{
ec.removeChild(w);
}
else
{
w = doc.createElement("br");
ec.appendChild(w);
}
ec.removeChild(t);
ec.removeChild(i);
return false;
}
function UntranslitNode (node) {
if (!node) return;
if (node.nodeName == "#text")
{
var s = node.nodeValue;
node.nodeValue = TranslitToRus(s);
var pn = node.parentNode;
var t;
t = doc.createElement("img");
t.setAttribute("src","http://lj.rossia.org/img/btn_next.gif");
t.setAttribute("width","22");
t.setAttribute("height","20"); // if pictures are not loaded
var original_kal = doc.createComment(s);
var dl = document.createElement("a");
dl.href = "#";
dl.appendChild(t);
dl.appendChild(original_kal);
dl.addEventListener("click", DeKaledin, false);
pn.insertBefore(dl,node);
}
else
{
if (node.hasChildNodes)
{
var nn = Array(); // childNodes is alive
var i = node.childNodes.length;
for (var f = 0; f < i; f++) // for-in does not work as I expect
nn.push(node.childNodes[f]);
for (var f = 0; f < nn.length; f++)
UntranslitNode(nn[f]);
}
}
}
|
|