相关疑难解决方法(0)

是否可以在不破坏后代事件监听器的情况下附加到innerHTML?

在下面的示例代码中,我将onclick事件处理程序附加到包含文本"foo"的span.处理程序是一个匿名函数,弹出alert().

但是,如果我分配给父节点alert(),则此innerHTML事件处理程序将被销毁 - 单击"foo"将无法弹出警告框.

这可以解决吗?

<html>
 <head>
 <script type="text/javascript">

  function start () {
    myspan = document.getElementById("myspan");
    myspan.onclick = function() { alert ("hi"); };

    mydiv = document.getElementById("mydiv");
    mydiv.innerHTML += "bar";
  }

 </script>
 </head>

 <body onload="start()">
   <div id="mydiv" style="border: solid red 2px">
     <span id="myspan">foo</span>
   </div>
 </body>

</html>
Run Code Online (Sandbox Code Playgroud)

html javascript innerhtml dom-events

100
推荐指数
2
解决办法
26万
查看次数

JavaScript:使用innerHTML或(很多)createElement调用来添加复杂的div结构会更好吗?

我正在研究一个问题,需要为一组~100个元素中的每个元素创建一个复杂的div块.

除了内容之外,每个单独的元素都是相同的,它们看起来(在HTML中)是这样的:

<div class="class0 class1 class3">
<div class="spacer"></div>
<div id="content">content</div>
<div class="spacer"></div>
<div id="content2">content2</div>
<div class="class4">content3</div>
<div class="spacer"></div>
<div id="footer">content3</div>
</div>
Run Code Online (Sandbox Code Playgroud)

我可以:

1)innerHTML使用字符串连接创建所有元素以添加内容.

2)使用createElement,setAttributeappendChild创建和添加每个div.

选项1获取稍微小一点的文件可供下载,但选项2的渲染速度似乎稍快.

除了表演之外还有一个很好的理由通过一条路线或另一条路线?我应该测试的任何跨浏览器问题/性能问题?

...或者我应该尝试模板和克隆方法?

非常感谢.

javascript dom

23
推荐指数
4
解决办法
1万
查看次数

我为什么要使用jQuery?

(我知道其他人问了一个类似的问题,它被关闭为'议论',但我真的很有兴趣理解围绕这个问题的争论.)

我非常了解JavaScript.我已经专业写了多年了.我已经内化了很多跨浏览器的不兼容性和粗略感,知道DOM操作就像我的手背,已经与业内一些最好的Web开发人员合作并获得了很多他们的魔力.

我一直在查看jQuery.我理解javascript库的意义(我写了多少次动画,getElementsByClass和hide/show函数?).但说实话,学习一种并不复杂的全新语法似乎是浪费时间.看起来我正在抨击墙壁来学习一个全新的JavaScript接口.

我在技术上不是工程师,所以也许我错过了什么.有人可以拼出jQuery的权衡吗?学习和理解jQuery语法真的比学习JavaScript更快吗?

javascript jquery

18
推荐指数
3
解决办法
1736
查看次数

使用Jquery返回ajax调用中的大字符串到ASP.NET的Web方法

在我的ASP.NET网站中,我使用Jquery调用Web方法,如下所示:

 $.ajax({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    data: "{'param1': '" + param1 + "','param2': '" + param2+ "' }",
    dataType: 'json',
    url: "Default.aspx/TestMethod",       
    error: function (jqXHR, textStatus, errorThrown) {
        alert("error: " + textStatus);                     
    },
    success: function (msg) {
        document.getElementById("content").innerHTML = msg.d;
    }
});  
Run Code Online (Sandbox Code Playgroud)

Web方法定义是:

[System.Web.Services.WebMethod]
public static String TestMethod(String param1, String param2)
{       
     String to_return = /* result of operations on param1 and param2 */;        
     return to_return;
}
Run Code Online (Sandbox Code Playgroud)

我的结果是一个包含HTML代码的String.
如果to_return字符串很小,它是完美的.
但它给我的错误是:

500内部服务器错误6.22s

我尝试使用FireBug在Response中探索它,它向我展示:

{"Message":"处理请求时出错.","StackTrace":"","ExceptionType":""}

在Visual Studio中使用断点,我已将to_return字符串复制到文本文件中.文件大小变为:127 …

asp.net jquery webmethod

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

javascript ×3

jquery ×2

asp.net ×1

dom ×1

dom-events ×1

html ×1

innerhtml ×1

webmethod ×1