كيف يمكنك كتابة وظيفة صف بالتناوب باستخدام معامل في Coffescript؟

StackOverflow https://stackoverflow.com/questions/4217825

  •  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 يحمل عداد الحلقة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top