首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Javascript将大量HTML插入元素的最佳实践是什么?

使用Javascript将大量HTML插入元素的最佳实践是什么?
EN

Stack Overflow用户
提问于 2010-05-15 19:00:10
回答 1查看 9.2K关注 0票数 18

我正在构建一个web应用程序(使用prototype),它需要将大量的HTML添加到DOM中。其中大多数是包含具有各种属性的元素的行。

目前,我在一个变量中保留了一个空白的HTML行,

代码语言:javascript
复制
var blankRow = '<tr><td>'
    +'<a href="{LINK}" onclick="someFunc(\'{STRING}\');">{WORD}</a>'
    +'</td></tr>';

function insertRow(o) {
    newRow = blankRow
        .sub('{LINK}',o.link)
        .sub('{STRING}',o.string)
        .sub('{WORD}',o.word);
    $('tbodyElem').insert( newRow );
}

现在,这一切都运行得很好,但这是最佳实践吗?

当我更新页面上的代码时,我必须更新blankRow中的代码,所以插入的新元素是相同的。当我在一个blankRow中有40行超文本标记语言时,它变得很糟糕,然后我也不得不转义它。

有没有更简单的方法?我在考虑对blankRow进行编码,然后在插入之前对其进行解码,但这仍然意味着but和大量转义。

这意味着什么将是一个类似PHP等人的eof函数。

代码语言:javascript
复制
$blankRow = <<<EOF
text
text
EOF;

这将意味着无法转义,但它仍然需要一个blankRow。

在这种情况下你会怎么做?

已解决

最终在prototype中使用了DOMBuilder。不需要其他库:

代码语言:javascript
复制
$w('a div p span img table thead td th tr tbody tfoot input').each(function(e) {
        window['$' + e] = function() {
            return new Element(e, arguments[0]);
        }
});

newPart = $div({id: 'partition-4'})
    .insert( $p()
        .insert('<b>Stuff</b>')
    )
    .insert( $p({
        id: 'a-p'})
        .insert('<b>More stuff</b>')
    );

$('parentDiv').insert(newPart);

请参阅我的解决方案herehere

EN

回答 1

Stack Overflow用户

发布于 2010-05-15 19:21:18

如果我理解得很好,您的问题是关于初始化大型字符串的方式,就像在PHP (或Perl )中那样?对于我使用的长(多行)字符串:

代码语言:javascript
复制
var blankRow = [
     'a line',
     'another line',
     'still more lines',
     'lines lines lines',
     '... etc'
    ].join('')

你也可以使用反斜杠来继续,但这可能会变得有点混乱:

代码语言:javascript
复制
var blankRow = 'a line\
another line\
still more lines\
lines lines lines\
... etc';

基于评论进行编辑:我也很懒!所以我用这个来进行转义:

代码语言:javascript
复制
function qs(str){
    str = str || this || '';
    return "'"+str+"'";
}

function qd(str){
    str = str || this || '';
    return '"'+str+'"';

}

String.prototype.qs = qs;
String.prototype.qd = qd;

// applied:
var blankRow = [
         'a line',
         'another '+qd('line'),
         'still more lines',
         'lines '+'lines'.qs()+ ' lines',
         '... etc'
        ].join('');

懒惰的问题:坚持一个人的懒惰是相当困难的工作

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2839844

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档