簡體   English   中英

用JavaScript編寫HTML

[英]Writing HTML in JavaScript

我的HTML中有這個div,我想動態添加它,但是我認為JavaScript字符串中有很多HTML,還有其他更好的方法嗎?

如果有人知道一些技巧,我正在用MVC編程

我的HTML

<div class="container">
    <div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel">
        <div class="panel-heading">Random1 - Random2</div>
        <div class="panel-body">
            <div>Random3</div>
        </div>
    </div>
</div>

我的jQuery

$('#mybtn').click(function () {
    $('#mydiv').append('<div class="container"><div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel"><div class="panel-heading">Random1 - Random2</div><div class="panel-body"><div>Random3</div></div></div></div>');
});

您可以創建一個可以在需要時讀取的模板。 通過使用類型為"text/template" script

這是一個例子。

  $(document).ready(function() { $('button').click(function() { $('#mydiv').append($('#templateId').html()); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <button>button</button> <div id="mydiv">mydiv</div> <script type="text/template" id="templateId"> <div class="container"> <div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel"> <div class="panel-heading">Random1 - Random2</div> <div class="panel-body"> <div>Random3</div> </div> </div> </div> </div> </script> 

通常,混合興趣(HTML,JS,CSS)不是最好的主意。 將其分開並使用模板引擎。 但是,您當然可以將HTML放入Javascript文件中,我會對其進行正確格式化。

var myTMPL = '<div class="container">' +
                  '<div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel">' +
                       '<div class="panel-heading">Random1 - Random2</div>' +
                       '<div class="panel-body">' +
                           '<div>Random3</div>' +
                       '</div>' +
                  '</div>' +
             '</div>';

然后像

$('#mydiv').append( myTMPL ); 

您可以嘗試將html作為頁面上的隱藏元素並將其插入。 整理一下:

<div id="myOtherDiv" style="display: none;">
    <div class="container">
        ....... rest of html
    </div>
</div>

腳本:

$('#mybtn').click(function () {
    $('#mydiv').append($("#myOtherDiv").html());
});

這樣的事情:1.將所有html添加到一個新的div中,命名為addingtext:

  <div name="addingtext">
     <div class="container">
        <div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel">
        <div class="panel-heading">Random1 - Random2</div>
        <div class="panel-body">
            <div>Random3</div>
       </div>
     </div>
    </div>
  </div>

2.獲取您的div的所有內部HTML(源代碼),名稱為addingtext:

 var stringtoadd = document.getElementsByName("addingtext").innerHTML;

然后

 $('#mydiv').append(stringtoadd);

您可以在/* comment */內的Javascript函數中編寫HTML代碼,然后將該函數轉換為使用functionname.toString()方法的文本,並在“ /* ”和“ */ ”之間解析文本,該文本在所有舊瀏覽器中均適用。 例:

function myfunc()
{/*

<div class="container">
        <div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel">
            <div class="panel-heading">Random1 - Random2</div>
            <div class="panel-body">
                <div>Random3</div>
            </div>
        </div>
    </div>

*/}

function getLines(func)
{
var myhtml = func.toString();
var htmlstart = myhtml.indexOf('/*');
var htmlend = myhtml.lastIndexOf('*/');
return myhtml.substr(htmlstart+2, htmlend-htmlstart-2);
}

$('#mybtn').click(function () {
    $('#mydiv').append( getLines(myfunc) );
});

這個簡單的技巧還可以用於通過JSONP發送XML,HTML或純文本。

如果您知道angular.js,則可以為要添加/替換的文本創建一個單獨的html文件,而不是通過javascript替換所有文本,而只需創建<div ng-include="'html-with-text.html'"></div>和javascript。

有很多方法可以做到(這里提供的所有答案都很好)。 但是您需要選擇一種有效的方法來做到這一點。 我還在學習JS。 因此,我真的無法幫助您選擇有效的方法。 但是您也可以嘗試這種方法。

代替append(),您還可以使用load()( 引用load()api

主要的HTML代碼:-

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>button</button>
<div id="myDiv">mydiv</div>
<div id = "addHere"> </div>

您要添加的HTML(假設此HTML的標題為addon.html):-

<div class="container">
    <div class="panel panel-info col-lg-10 col-lg-offset-1 added-panel">
    <div class="panel-heading">Random1 - Random2</div>
    <div class="panel-body">
        <div>Random3</div>
   </div>
 </div>
</div>

最后,你的JS

$('#mybtn').click(function () {
    $('#addHere').load('/addon.html');
});

這會將您的插件HTML放在div之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM