2011-06-22 41 views
4

我嘗試創建模塊化應用程序,因此每個頁面都包含自己的html和javascript代碼。 我應該動態加載的所有代碼,如:JQuery附加javascript

var s = document.createElement("script"); 
s.type = "text/javascript"; 
s.src='function oncl() { alert("click");}'; 
$(".selector").append(s); 

$(".selector"). 
append('<input type="button" onclick="ocl();" /> 
<form action="../test/test_upload4.php" 
method="POST" enctype="multipart/form-data" name="getnamefile"> 
<input type="file" id="uploadfile" name="uploadfile"> 
<input type="submit" id="Submit" name= "Submit" value="Upload"></form>'); 

但它不工作 - 錯誤:不定義OCL。可能是什麼原因?如果我理解在每個網頁中正確的是一個包含所有javascript函數的對象 - 那麼爲什麼不可以添加或刪除函數?

+0

爲什麼你需要這種hackery?你在HTML中使用jQuery和onclick? –

+0

這是一個可怕的想法。你爲什麼做這個? – SLaks

+0

我正在開發的Web應用程序非常複雜。它像CRM。它包含近100頁。所以我需要分離到獨立的頁面 - 以並行方式工作。如果每個模塊都有自己的javascript和html,這似乎很方便 – user810430

回答

2

如果您想加載的js文件的動態,你可以嘗試如下所示:

下面是HTML網頁代碼:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 

    <html> 
    <head> 
    <script type="text/javascript"> 
     function dynamicLoad() { 
      var s = document.createElement("script"); 
      s.type="text/javascript"; 
      s.language="javascript"; 
      // Here goes your 
      s.src ="dynamic.js"; 
      document.getElementsByTagName("head")[0].appendChild(s); 
      s.onreadystatechange = function() { 
       //window.alert(s.readyState); 
      } 
      s.onload= function() { 
       if (s.readyState == "complete") { 
// You must create your DOM element after the js file has been loaded 
        var btn = document.createElement("input"); 
        btn.type="button"; 
        btn.value="Click Me"; 
        btn.onclick = test; 
        document.getElementsByTagName("body")[0].appendChild(btn); 
       } 
      } 
     } 
    </script> 
    </head> 
    <body onload="dynamicLoad()"> 
     <!-- a href="javascript:void(0)" onclick="test()">Click Me</a --> 
    </body> 
    </html> 

這裏是js文件:

function test() { 
    window.alert("HELLO"); 
} 

我測試了IE 9下的代碼。只是FYI

2

<script>標記的src屬性指定外部JavaScript文件的URL,而不是腳本的文本。

如果要以任意字符串執行代碼,可以調用eval函數。
但是,不要

1

在代碼中,你聲明一個名爲oncl功能,並試圖調用OCL(用缺少ñ)。

問候,

最大

+0

謝謝 - 但錯誤仍然存​​在。現在錯誤:oncl沒有定義 – user810430

+0

看看SLaks的答案(並考慮到其他貢獻者的意見,也許你可以找到另一種方法來做你想做的事情) – JMax

1

除了你沒有定義的「八達通」的功能有「oncl」上面的回答。