Javascript:TypeError:document.getElementById(...)为null动态创建<div> MVC4 </div>

时间:2014-03-26 07:48:18

标签: javascript jquery html css asp.net-mvc-4

我正在尝试从模型中的条目创建一个表。

我有一个foreach,每个项目都有以下代码:

<td class="answerTD">
    <div class="answerOptionDiv" onclick="rightanswer(A1@(item.id))">
         @item.Choice1
    </div>
</td>
<td class="answerTD">
    <div id="A1@(item.id)" class="rightAnswer">Correct</div>
</td>

我正在使用item id和alpabetical范围为每个div提供唯一的名称

我有一个非常简单的javascript函数(可以在另一个不动态创建的表单上工作),它只显示了答案div:

<script>
    function rightanswer(x) {
        console.info = 'Fired Right';
        document.getElementById(x).style.display = 'block';
    }
</script>

当我在Firebug中测试函数时,我收到以下错误,控制台没有显示我的信息消息:

TypeError: document.getElementById(...) is null

document.getElementById(x).style.display = 'block';

我正在尝试做什么?

3 个答案:

答案 0 :(得分:1)

你应该用引号传递参数。

使用

<div class="answerOptionDiv" onclick="rightanswer('A1@(item.id)')">

而不是

<div class="answerOptionDiv" onclick="rightanswer(A1@(item.id))">

答案 1 :(得分:0)

如果在jQuery中动态创建了某些内容,并且您想捕获调用,则必须确保将函数放在彼此旁边。假设您想通过.click功能显示按钮,并且您想在第二个按钮上使用.click。您必须确保将它们放在同一个函数中,否则将无法调用它。

这不起作用:

$("#buttonOne").click(function() { 
   $("#divId").append("<a id='buttonTwo'>simpleButton</a>");
});
$("#buttonTwo").click(function() { alert("clicked"); });

但这会:

$("#buttonOne").click(function() { 
   $("#divId").append("<a id='buttonTwo'>simpleButton</a>");
   $("#buttonTwo").click(function() { alert("clicked"); });
});

答案 2 :(得分:0)

抱歉,我是新的Stackoverflow

在asp.net Actualy Startup是我的id,但在客户端它将显示为ctl00_dmrcontent_Startup所以在你的脚本更改onclick =&#34; rightanswer(&#39; A1 @(item.id)&#39;) &#34;然后检查客户端

中显示的div id
<div  id="Startup" runat="server">