- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
var val = value.match(/^(-?\d*)n((\+|\-)(\d+))?$/);
var v1 = (val[1] == "-") ? -1 : parseInt(val[1]); // A/-
var v3 = val[3]; // +/-
var v4 = parseInt(val[4]); // B
var k = 0;
for (var k = 0; k < children2.length; k++) {
if (!val[1] && !val[3] && !val[4] && (children2[k] == elements[j])) { // n
buf.push(children2[k]);
} else if (!!val[1] && !val[3] && !val[4] && (children2[v1 * k + v1 - 1] == elements[j])) { // An
if (v1 >= 0 && v1 * k + v1 - 1 < children2.length) buf.push(children2[v1 * k + v1 - 1]);
} else if (!val[1] && !!val[3] && !!val[4] && (children2[v3 == "+" ? (k + v4 - (v4 == 0 ? 0 : 1)) : (v3 == "-" ? k : "")] == elements[j])) { // n+B
if (v3 == "+" && (k + v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
buf.push(children2[k + v4 - (v4 == 0 ? 0 : 1)]);
} else if (v3 == "-") {
buf.push(children2[k]);
}
} else if (!!val[1] && !!val[3] && !!val[4] && (children2[v3 == "+" ? (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) : (v3 == "-" ? (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) : "")] == elements[j])) { // An+B
if (v3 == "+" && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) >= 0 && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
buf.push(children2[v1 * k + (v4 == 0 ? (v1 - 1) : 0) + v4 - (v4 == 0 ? 0 : 1)]);
} else if (v3 == "-" && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) >= 0 && (v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)) < children2.length) {
buf.push(children2[v1 * k + (v4 == 0 ? (v1 - 1) : 0) - v4 - (v4 == 0 ? 0 : 1)]);
}
}
}
ГК собственного сочинения. Пытался самостоятельно реализовать обработку псевдоселектора :nth-child(An+B) на JavaScript...
guest 18.01.2010 09:11 # +2
striker 18.01.2010 10:14 # 0
Grockles 18.01.2010 11:06 # 0
cheef 18.01.2010 11:40 # 0
обожаю ничего не говорящие названия :D
nolka4 18.01.2010 11:57 # −8
guest 26.02.2010 08:40 # 0
guest 26.02.2010 08:41 # 0
guest 26.02.2010 15:55 # −2