2012-02-24 98 views
-1

好吧...我正在嘗試編寫一些將應用於html塊的JavaScript代碼,該代碼本身出現在JavaScript文件中。這是一個完整的混亂。這裏有一個例子:在JavaScript中使用Javascript嵌入Javascript(Oi!)

[new Date(1942,01,01), , '<div onclick="this.nextSibling.style.display=\'block\'; this.style.display=\'none\'"><img src="img/content/michenerCenterThumb.jpg" style="cursor:pointer" /></div><div style="display:none"><iframe width="200" height="165" src="http://www.youtube.com/embed/in7IUzjN3pY?rel=0" frameborder="0" allowfullscreen></iframe>'], 

[編輯]我使用的時間軸,它可以在這裏找到:http://links.sourceforge.net/#timeline。建立一個時間表的一部分涉及添加條目,這樣的樣品中:

data.addRows([ 
     [new Date(2010,7,23), , 'Conversation<br>' + 
     '<img src="img/comments-icon.png" style="width:32px; height:32px;">'], 
     [new Date(2010,7,23,23,0,0), , 'Mail from boss<br>' + 
     '<img src="img/mail-icon.png" style="width:32px; height:32px;">'], 
     [new Date(2010,7,24,16,0,0), , 'Report'], 
     [new Date(2010,7,26), new Date(2010,8,2), 'Traject A'],  
     [new Date(2010,7,28), , 'Memo<br>' + 
     '<img src="img/notes-edit-icon.png" style="width:48px; height:48px;">'], 
     [new Date(2010,7,29), , 'Phone call<br>' + 
     '<img src="img/Hardware-Mobile-Phone-icon.png" style="width:32px; height:32px;">'], 
     [new Date(2010,7,31), new Date(2010,8,3), 'Traject B'],  
     [new Date(2010,8,4,12,0,0), , 'Report<br>' + 
     '<img src="img/attachment-icon.png" style="width:32px; height:32px;">'] 
    ]); 

在HTML,我想實現jQuery用戶界面,highslider等,但這變得凌亂非常快的(就像在我上面的例子。 )在這種情況下,「做對了」是什麼?

感謝,

+3

是的,這樣做的正確之道™ – alex 2012-02-24 03:45:52

+1

如果從開始假設您「需要」使用JavaScript創建包含JavaScript的內聯事件屬性的HTML,那麼上述內容幾乎是您將要獲得的。你實際上對那串html有什麼作用?如果您問是否有其他方式可以創建html元素並將事件處理程序分配給這些元素,那麼答案是「是」。以上是什麼情況?它是否位於其他非常類似的html項目的數組中? – nnnnnn 2012-02-24 03:58:23

+0

你將有一天會陷入一個會破壞這個宇宙的遞歸循環。 – 2012-02-24 04:43:42

回答

0

我想出了一個更好的解決方案......近了,我希望,到如何正確編碼。每個元素的html現在寫在html頁面上。我通過使用自定義的getElementsByClassName來讀取它,它將每個項目類插入到一個數組中。這個數組然後填充時間線。

的HTML:

<div class="item" date="1956,1,1" enddate="1967,1,1"> 
Some Content  
</div> 

和JavaScript:

var items = getElementsByClassName("item"); 
    for (var x = 0; x < items.length; x++) { 
     var date = items[x].getAttribute("date"); 
     var enddate = items[x].getAttribute("enddate"); 
     var html = items[x].innerHTML; 
      if (!enddate) { 
       items[x]=[new Date(date), enddate, html]; 
      } else {   
       items[x]=[new Date(date), new Date(enddate), html]; 
      } 
     } 

    data.addColumn('datetime', 'start'); 
    data.addColumn('datetime', 'end'); 
    data.addColumn('string', 'content'); 

    data.addRows(items); 

您可以在這裏找到自定義getElementsByClassName方法:http://code.google.com/p/getelementsbyclassname/