如何使用JavaScript添加动态HTML内容(DIV)

How to add dynamic HTML content (DIV) using JavaScript?

本文关键字:内容 DIV HTML 动态 何使用 JavaScript 添加      更新时间:2024-03-02

在从服务器端返回数据时,我需要帮助添加动态html。我使用ajax/jQuery来处理服务器端处理需求。目前,在ajax的成功代码部分,我可以编写html元素(请参阅下面的ajax),但这对于demo页面来说是可以的,但对于真正的代码来说,这让我在html代码中编写大量的html呈现。

在HTML页面中,我包含了HTML代码,当用户单击提交按钮并隐藏后面的视图(div id)时,我希望这些代码显示在用户面前。我可以告诉JavaScript动态添加这个html代码吗?从服务器端,我只想在下传递以下值

<div id="package-header-message">
            <div class="spacer-vertical"></div>
            <div>Your incident was submitted on December 04, 2013 at 11:38:53 am EDT. Your test-CERT Incident ID number is: </div>
            <div class="spacer-vertical"></div>
            <div class="bold left-indent">2013-testCERTv36LBQB</div>
            <div class="spacer-vertical"></div>
          </div>  

2013-testCERTv36LBQB的值我希望它根据服务器的响应进行设置。我可以在.ajax下完成,但我也可以使用javascript为我附加这个值吗?

如果有人能帮我定义执行流程,我将不胜感激。

HTML

<div id="frm">  
<form name="frm" method="POST" action="">
    <input type="text" name="name" id="name" value="" />
    <input type="text" name="last_name" id="last_name" value="" />
    <input type="submit" name="Update" id="update" value="Update" />
</form>
</div>  
<!-- <div id="region-content" class="grid-12 region region-content">
  <div class="region-inner region-content-inner">
    <a id="main-content"></a>
                <h1 id="page-title" class="title">Thank you for your incident submission.</h1>
                        <div id="block-system-main" class="block block-system block-main block-system-main odd block-without-title">
  <div class="block-inner clearfix">
    <div class="content clearfix">
          <div id="package-header-message">
            <div class="spacer-vertical"></div>
            <div>Your incident was submitted on December 04, 2013 at 11:38:53 am EDT. Your test-CERT Incident ID number is: </div>
            <div class="spacer-vertical"></div>
            <div class="bold left-indent">2013-testCERTv36LBQB</div>
            <div class="spacer-vertical"></div>
          </div>                       
          <p>
            The test-CERT Watch staff may contact you based on the information submitted. If you have any questions regarding this incident or would like to provide test with any edits or changes to this information, please contact test-CERT Security Operations Center at:
            </p><ul>
              <li>Phone: +1 888-282-0870</li>
              <li>Email: <a href="mailto:soc@test.com" title="Send email to the Security Operations Center Email: soc@test-cert.gov">soc@test-cert.gov</a></li>
              <li>Web: <a href="/" title="Go back to the test-CERT Homepage">http://www.test-cert.gov/</a>.</li>
            </ul>
          <p></p>
          <p>
            Secure phone and fax are available upon request. Contact test-CERT Watch at the above phone number to coordinate.
          </p>
          <p><a title="Submit another incident report" href="/forms/report">Click here</a> to submit another incident report or you can return to the <a href="/" title="Go back to the test-CERT Homepage">test-CERT Homepage</a>.
          </p>
              </div>
  </div>
</div>      </div>
</div>-->

ajax/jquery

  $("#update").click(function (e) {
        e.preventDefault();
        var name = $("#name").val();
        var last_name = $("#last_name").val();
        var dataString = 'name=' + name + '&last_name=' + last_name; 
alert(dataString);
        $.ajax({  
  type: "POST",  
  url: "bin/process.php",  
  data: dataString,  
   success: function(data) {  
      alert("ff");
  // var ctrlArray = data.split('&'); 
 if(result.indexOf("pass") > -1)      
//alert("ff");
    $('#frm').html("<div id='message'></div>");  
    $('#message').html("<h2>Contact Form Submitted!</h2>")  
    .append("<p>We will be in touch soon.</p>")  
    .hide()  
    .fadeIn(1500, function() {  
      $('#message').append("<img id='checkmark' src='images/check.png' />");  
    });  
  }  
});  
return false;
  })

DEMO

明智的做法是从服务器设置并返回日期,这样您就可以获得一个关于事情发生时间的中心权限。通常,以毫秒为单位打包为UTC是一个好主意,因为这为客户端开发人员提供了很多选择,并使时区等方面的管理更加容易。因此,假设您已将以下JSON传递给客户端:

{
    responseDate:1386181171730,
    userId:'2013-testCERTv36LBQB'
}

以下是我通常如何使用{{}}来标记变量以进行替换来处理HTML格式。

function createPhm(ajaxSuccessObject){
    var //var block
    phm =[ //array/whitespace format so we can still view/edit in an HTML-ish format
        '<div id="package-header-message">',
            '<p>Your incident was submitted on {{DATE}}. Your test-CERT Incident ID number is:</p>',
            '<span class="bold left-indent">{{USER_ID}}</span>',
         '</div>'
    ].join(''), //converted to string
    injectedValues = {
        DATE = Date( ajaxSuccessObject.date ),
        USER_ID = ajaxSuccessObject.userId
    }
    ;//end var block

    return ( injectValues( injectedValues, phm ) );
}
//broke this out for more generic handling of HTML
function injectValues(valuesObj, targetString){
    for(var x in valuesObj){
        var globalRegExMatcher = new RegExp('''{''{'+ x +'''}''}','g');
        targetString = targetString.replace( globalRegExMatcher, valuesObj[x] );
    }
    return targetString;
}

因此,您的ajax成功函数可能看起来像:

...
    success: function(jsonObj){
        $( createPhm(jsonObj) ).appendTo('#frm'); //or prependTo for putting at top
    },
...

快速提示:不要像以前那样使用.html。这将替换容器中的所有html。它基本上只是内部HTML。

此外,如果您有永远不会更改的HTML,请将其放在HTML文件中。我通常只会在HTML文件中有一个空的<div id="package-header-message"></div>,并将.HTML直接放入其中,但我希望保持HTML的相似性以避免混淆。

为什么不把你想在提交时显示的html的静态部分已经存在(或者可能在一个单独的template.html文件中),但隐藏起来,只填充你在请求成功时获得的数据。然后你可以解开它。

$('.left-indent').text(data.value); //where data.value, say, equals "2013-testCERTv36LBQB"
$(#package-header-message').show();