2010-02-09 68 views
0

我加載html &從webservice動態的JS代碼。我使用的原型更新方法:動態javascript - onclick不可見

placeholder.update(result.Static.html); // which also include javascript code 

緊接着我裝的代碼,一切正常:

ProRegResetForm(); 
alert('reset done'); 

然而,從聲明

<a href="javascript://" onclick="javascript:ProRegResetForm();" class="au">Reset</a> 

我有差錯控制:ProRegResetForm是沒有定義的。

簡化測試代碼(這也是不工作):

<script type="text/javascript"> 

    var defkeyword_ZipCode = 'Zip Code'; 

</script> 
<a href="javascript://" onclick="alert(defkeyword_ZipCode);">test link</a> 
+0

你能給出一個更完整的代碼示例嗎?問題很可能出現在您沒有顯示的代碼段中。很難判斷測試調用和click事件之間是否發生了某些功能。您是否嘗試將click事件更改爲其他函數(可能爲「alert」)以確保點擊事件正確觸發? – 2010-02-09 18:55:42

+2

你永遠不需要javascript:在onclick。這並不能解決你的問題。 – 2010-02-09 19:08:43

+0

看來,所有在即將到來的腳本中定義的變量和函數都存在於獨立的命名空間中。 – st78 2010-02-09 19:08:58

回答

0

這是正確的寫這樣的代碼:

<a href="javascript://" id="element">test link</a> 
<script type="text/javascript"> 
    functoin somethingcomplex() { 
bla bla bla 
} 

    $('element').onclick = function() { somethingcomplex(); } 

</script> 
0

考慮到你的「簡化測試代碼」沒有執行的話,您的代碼中的其他地方可能會出現javascript錯誤。遵循例外的Javascript代碼將不會執行。

您是否嘗試過使用Firebug或IE Developer Toolbar在您的代碼片段之前檢查腳本(因爲它出現在客戶端上)?

0

我有一個類似的問題,並通過使用'^'來分隔JavaScript的HTML響應並分別插入來解決它。

//============================================================================= 
function injectJavascript(src) 
    { 
    var scripts = document.getElementById("scripts"); 
    var javascriptSrc = document.createElement("script"); 
    javascriptSrc.setAttribute("type", "text/javascript"); 
    javascriptSrc.setAttribute("language", "JavaScript1.2"); 
    javascriptSrc.innerHTML = src; 
    scripts.appendChild(javascriptSrc); 
    } 
//============================================================================= 
function insertHtmlAndScript(target) 
    { 
    if (req.readyState == 4) // 4 == "loaded" 
     { 
     if (req.status == 200) // 200 == "Ok" 
      { 
      var resp = req.responseText.split("^"); 
      div = document.getElementById(target); 
      div.innerHTML = resp[0]; 
      injectJavascript(resp[1]); 
      } 
     else 
      { 
      alert("Could not retreive URL:\n" + req.statusText); 
      } 
     } 
    } 
//====================================================================== 

我能想到的,這個工作,而你的注入確實不是唯一的原因是,HTML與JavaScript的解釋是螺紋使得JavaScript不能正確地綁定...但是這只是一個猜測。