在 HTML 中显示变量的好做法是什么?
What are good practices for displaying variables in HTML?
我是Javascript和Jquery的新手。
我正在使用 Jquery $.ajax 发送 get 请求,处理返回的 Json 字符串并使用 .html()
在我的 html 中以<div id="myTabs"></div>
显示内容。你可以从下面的代码中看到,我正在使用一个字符串变量来制作一个HTML列表。我这样做是好的做法吗?我觉得这种方式不是很敏捷,有没有更好的方法呢?
谢谢!
function updateRelated(str)
{
$.ajax(
{
url:ServerUrl+api_subject,
type:'GET',
success:function(json)
{
// alert(json);
var obj = jQuery.parseJSON(json);
var toDisplay="";
var tableDisplay="<ul>";
for(var i=0;i<obj.subject_list.length;i++)
{
tableDisplay=tableDisplay+'<li><a href="subject.htm?subjectid='+obj.subject_list[i].id+'">'+obj.subject_list[i].title+'</li>';
// toDisplay=toDisplay+"<br>preferred_synonym:"+obj.relatedCocepts[i].preferred_synonym+",Type: "+obj.relatedCocepts[i].type+",score: "+obj.relatedCocepts[i].score;
}
tableDisplay=tableDisplay+"</ul>"
$("#myTabs").html(tableDisplay);
}
}
)
}
我正在阅读您的问题,实际上是在询问您是否应该编写一串标记并将其输出到DOM中,并将变量连接到其中。
对于较小的东西是可以的,但是如果你用javascript编写了很多视图,你会需要一个工具来组合视图部分。
有一些工具可以做到这一点:
- http://mustache.github.com/
- https://github.com/adammark/Markup.js
- http://api.jquery.com/category/plugins/templates/
你可能想使用像jsViews这样的模板引擎。如果你坚持使用 jQuery 循环和创建元素,请查看: http://www.andyjarrett.co.uk/blog/index.cfm/2009/3/14/Creating-a-new-DOM-element-with-jQuery/- 语法很简单:
div = $("<div>"); // then append more stuff with append() or html()
但同样,如果您要附加大量内容,使用模板引擎远远优于自制循环解决方案。它也更加健壮和可扩展(布局修改更容易实现)。
就像其他人已经说过的那样,如果你有很多 html,模板引擎是要走的路。但是,您可以使用数组清理当前代码。我评论了几件事:
var list = [],
arr = obj.subject_list,
len = arr.length; // cache length for better performance
for (var i=0; i<len; i++) {
list.push(
'<li>'+
'<a href="subject.htm?subjectid='+ arr[i].id +'">'+
arr[i].title +
'</a>'+ // you forgot to close <a>
'</li>'
);
}
$("#mytabs").html('<ul>'+ list.join('') +'</ul>');
在 JavaScript 中处理 html 时,我建议正确缩进 html,就像它是真正的 html 一样。如您所见,它的可读性要高得多,并且可以避免语法错误,例如缺少结束</a>
。
你在这里做得很好,在这种情况下,我可能会做一些非常相似的事情。使用特殊的插件是可能的,并且可能更加用户友好,但它们几乎总是伴随着很多开销。我怀疑这在处理器负载方面是否可以更有效率。
你可以使用 jsrender 来实现这一点。
使用特殊类型在脚本标记中定义模板text/x-jsrender
:
<script id="listTemplate" type="text/x-jsrender">
<li><a href="subject.htm?subjectid={{>id}}">{{>title}}</a></li>
</script>
请注意,很容易看到 HTML 的结构。 与在javascript中连接相比,错过事物的机会更少(你错过了结束</a>
标签,顺便说一句)。
要使用此模板,请按如下所示修改函数:
success:function(json)
{
// alert(json);
var obj = jQuery.parseJSON(json);
var htmlList = $('#listTemplate').render(obj.subject_list);
$('#myTabs').html(htmlList);
}
这是一个jsfiddle演示:http://jsfiddle.net/d4DjY/。 将鼠标悬停在链接上,您可以看到它们在查询字符串中具有正确的 id。
更多演示在这里:http://borismoore.github.com/jsrender/demos/demos.html。 使用视图源代码查看模板代码。
看看jQuery Templates。 它仍处于测试阶段,不会再进一步,但对于您的情况,它应该没问题。
- 从HTML表单发布blob的表单输入类型是什么
- 将Rails后端添加到JS/HTML/CSS应用程序时,正确的文件位置是什么
- 什么是从html表单发送数据的纯javascript版本
- 选择具有特定数据的所有 html 标记的最有效方法是什么 - [适当性],无论值如何
- 在 HTML 中显示变量的好做法是什么?
- 根据DOM,HTML元素的开始和结束标记之间的内容被称为属性.这个房产的名字是什么
- Jquery:是什么HTML元素启动了ajax
- 异步数据加载后提交HTML表单的正确方法是什么
- 找出哪些 JavaScript 代码更改页面中特定 html 内容的最佳方法是什么?
- 从字符串中获取 html 标记的最可维护方法是什么
- 正确的选择器字符串是什么,可以在像这样结构的 HTML 中获取我想要的特定元素
- 配置早午餐以从一个模板文件输出多个 HTML/JS 文件的正确方法是什么?
- 通过javascript将元素添加到html的最简单方法是什么
- 使用innerHTML想法添加大量html元素的最佳方法是什么
- html表单输入字段验证的正确方法是什么
- 使用 nodejs & expressjs:在不模板的情况下将 .env 传递给 html 的好方法是什么?
- 用node替换html中的值/模板“键”的最佳方法是什么
- ASP.NET:如果(!IsPostback)在HTML中是什么
- DOM、原始 html 以及页面上显示的内容是什么关系
- HTML“专用”数据设备类型的目的是什么