आप को देखते हुए कहा, "रंग यदि संभव हो तो" मैं एक उदाहरण के समाधान है कि रंग काफी जिस तरह से आप चाहते हैं (यह एक तरीका है कि मैं कोड के लिए आसान पाया में यह करता है नहीं करता है प्रदान करेंगे और देखने के लिए और अधिक आकर्षक) लेकिन जो अलग-अलग टेबल आकारों के लिए सही ढंग से सभी नंबरों को संभालता है।
नीचे दिया गया कार्य मानता है कि तालिका पहले से मौजूद है; this demo में मैंने कोड शामिल किया है जो आपके द्वारा निर्दिष्ट आकार के लिए एक तालिका उत्पन्न करता है और फिर संख्या और रंग करने के लिए नीचे दिए गए फ़ंक्शन को कॉल करता है।
function numberDiagonally(tableId) {
var rows = document.getElementById(tableId).rows,
numRows = rows.length,
numCols = rows[0].cells.length,
sq = numRows + numCols - 1,
d, x, y,
i = 1,
dc,
c = -1,
colors = ["green","yellow","orange","red"];
diagonalLoop:
for (d = 0; d < sq; d++) {
dc = "diagonal" + d;
for (y = d, x = 0; y >= 0; y--, x++) {
if (x === numCols)
continue diagonalLoop;
if (y < numRows)
$(rows[y].cells[x]).html(i++).addClass(dc);
}
}
for (d = 0; d < sq; d++)
$(".diagonal" + d).css("background-color", colors[c=(c+1)%colors.length]);
}
डेमो: http://jsfiddle.net/7NZt3/2
सामान्य विचार मैं के साथ आया एक वर्ग में दो बार के रूप में बड़ी कल्पना x और y आयामों की जो भी रूप में बड़ा है और फिर बाएं से विकर्णों बनाने के लिए एक पाश का उपयोग किया गया उस बाउंडिंग वर्ग के किनारे ऊपर और दाईं ओर बढ़ते हैं - यानी, क्रम में आप संख्याएं चाहते हैं। संपादित करें: क्यों लंबे समय तक दोगुना बड़ा? क्योंकि यह पहली चीज है जो मेरे सिर में आई जब मैंने इसे कोडिंग करना शुरू किया और यह काम किया (ध्यान दें कि परिवर्तनीय i
है जो प्रदर्शित होने वाली संख्याओं को कैप्चररी कोशिकाओं के लिए बढ़ाया नहीं जाता है)। अब जब मेरे पास सोचने का समय है, तो मुझे एहसास हुआ कि मेरा sq
वैरिएबल पंक्तियों और स्तंभों की संख्या से कम से कम एक सेट पर सेट किया जा सकता है - एक संख्या जो गैर-वर्ग तालिकाओं के लिए छोटी होती है। उपरोक्त कोड और फिडल तदनुसार अद्यतन किया गया।
ध्यान दें कि पृष्ठभूमि रंग सीधे पहले लूप में सेट किए जा सकते हैं, लेकिन इसके बजाय मैंने कक्षाएं असाइन करने और बाद में प्रत्येक कक्षा के लिए लूप सेट करने का विकल्प चुना।उस समय एक अच्छा विचार की तरह लग रहा था क्योंकि इसका मतलब है कि एकल विकार चयनकर्ता के साथ jQuery में व्यक्तिगत विकर्णों को आसानी से चुना जा सकता है। के रूप में सुंदर नहीं मेरी राय में http://jsfiddle.net/7NZt3/1/ (है, लेकिन करने के लिए प्रत्येक: इस संस्करण रंग अधिक की तरह आप के लिए कहा है -
समझाते हुए काम करता है वास्तव में कैसे आराम पाठक के लिए एक व्यायाम के रूप में छोड़ दिया है ...
अद्यतन उसका अपना)।
आपके पास जगहों पर संख्या होने के बाद रंग आसान है :-) –
आपके आरेख में, पीले रंग की बजाय 15 नारंगी क्यों है? इसके अलावा, मैं इसे एक एल्गोरिदम चाहता हूं जो विभिन्न आकारों को संभाल सकता है, लेकिन तालिका हमेशा एक वर्ग होगी? – nnnnnn
त्वरित और गंदा: http://jsfiddle.net/Seybsen/ZdwV4/ लेकिन आपके लिए एक अच्छा प्रारंभिक बिंदु हो सकता है। – Seybsen