2010-02-09 81 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不能正确地绑定...但是这只是一个猜测。