كيف يمكنك كتابة وظيفة صف بالتناوب باستخدام معامل في Coffescript؟
-
26-09-2019 - |
سؤال
لقد حصلت على مثال هنا على جزء نموذجي من JavaScript (رمز من شأنه تطبيق فئة نمط الخلفية على صف فردي أو حتى في جدول). أحاول إعادة كتابة هذا في Coffescript في محاولتي لتعلم ذلك. بناء جملة مجموعة Coffescript مختلف وأكثر روبي. أنا أقدر حقًا مثالًا على كيفية قيامك بذلك؟
function alternate(id){
if(document.getElementsByTagName){
var table = document.getElementById(id);
var rows = table.getElementsByTagName("tr");
for(i = 0; i < rows.length; i++){
//manipulate rows
if(i % 2 == 0){
rows[i].className = "even";
}else{
rows[i].className = "odd";
}
}
}
}
تحديث
أنا أستخدم jQuery وأحاول ذلك ولكنه لا يعمل (يجعل جميع الصفوف #EFEFEF):
$(document).ready ->
rowCount = $('tbody tr')
for row in rowCount
if row.length % 2 == 0
$('tbody tr').css('background-color', '#363636')
else
$('tbody tr').css('background-color', '#efefef')
المحلول
أكثر إيجازا قليلا:
for row, i in $('tbody tr')
color = if i % 2 is 0 then '#363636' else '#efefef'
$(row).css 'background-color', color
نصائح أخرى
قد تكون مهتمًا أيضًا بمحددات التعريف الزوجية التي توفرها jQuery
$('tbody tr:even').css 'background-color', '#363636'
$('tbody tr:odd').css 'background-color', '#efefef'
إذا كان هدفك النهائي هو تطبيق نمط مختلف على الصفوف الفردية/حتى ، فيمكنك تجربة هذا:
// CSS file
#myTable tr:nth-child(even) { background-color: #363636; }
#myTable tr:nth-child(odd) { background-color: #efefef; }
لا JS هنا ، فقط CSS عادي ، وهو أمر جيد لأن التصميم هو مصدر قلق تقديمي.
ومع ذلك ، فهي تعمل فقط في المتصفحات الحديثة (نسبيًا): أي 9+ ، Firefox 4+ ، Chrome ...
محاولة for row, i in rows
, ، أين i
يحمل عداد الحلقة.
لا تنتمي إلى StackOverflow