动态javascript - onclick不可见

时间:2010-02-09 18:49:17

标签: javascript ajax

我加载了html& JS代码动态来自webservice。我使用原型更新方法:

 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>

3 个答案:

答案 0 :(得分:0)

编写如下代码是正确的:

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

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

</script>

答案 1 :(得分:0)

鉴于您的“简化测试代码”未执行,您的代码中的其他位置可能会出现javascript错误。跟随异常的Javascript代码将不会执行。

您是否尝试使用Firebug或IE Developer Toolbar在代码段之前检查脚本(因为它显示在客户端上)?

答案 2 :(得分: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无法正确绑定......但这只是猜测。