Javascript 单击按钮即可动态添加DOM元素

Javascript 单击按钮即可动态添加DOM元素,javascript,jquery,html,angularjs,Javascript,Jquery,Html,Angularjs,我想在点击一个按钮后将DOM元素添加到一个页面中,我已经在一个名为“newmission.html”的新html文件中编写了要添加的东西的代码,如下所示 <div class="boxheader" ng-controller="edit_vision_missionCtrl"> <div style="float:right; clear:right; width:20%;"> <span><a href="" style="

我想在点击一个按钮后将DOM元素添加到一个页面中,我已经在一个名为“newmission.html”的新html文件中编写了要添加的东西的代码,如下所示

 <div class="boxheader" ng-controller="edit_vision_missionCtrl">
    <div style="float:right; clear:right; width:20%;">
        <span><a href="" style="" ng-click="deletemission(mission.id)"><img src="assets/img/delete.png" style="width: 20%; height: 20%;"></a></span>
    </div>
    <span style="font-size: large; font-family: monospace; font-weight: bold;">EDIT MISSION NAME</span><input type="text" value="Enter Mission Name" class="form-control" style="background-color: #e8e8e8">
</div>
<div style="padding-top: 10px;">
    <span style="font-size: large; font-family: monospace; font-weight: bold; margin-left:5%;">EDIT MISSION POINTS</span><br />
</div>
<div style="padding-top: 10px;">
    <ul style="float: left; width: 100%;">
        <li style="padding: 2px; width: 100%;">
            <div style="float:right; clear:right; width:20%;">
                <span><a href="" style=""><img src="assets/img/delete.png" style="width: 20%; height: 20%;"></a></span>
            </div>
            <div>
                <input type="text" value="Enter Mission Point" class="form-control" style="background-color: #e8e8e8; width: 80%;">
            </div>
        </li>
    </ul>
</div>
<div style="padding-top: 35px;">
    <a href=""><img id="addmissionpoint" src="assets/img/add.png" alt="addmission" style="width: 7%;height: 12%;float: right; bottom: 0;"></a>
</div>
var newid = 0;
$scope.addmission = function(){
    newid--;
    $.get("newmission.html", function(data) {
        $("#toappend").prepend(data);
    });
};
这是我调用函数的代码

<div style="padding-top: 35px;">
        <a href="" ng-click="addmission()"><img id="addmission" src="assets/img/add.png" alt="addmission" style="width: 7%;height: 12%;float: right; bottom: 0;"></a>
    </div>

使用ng show/ng hide很简单

如果您有一个按钮:

<button class="primary" ng-click="addmission()" >Addmission</button>

<div class="boxheader" ng-controller="edit_vision_missionCtrl" ng-show="whenAdmission" ng-cloak>
//all other code
</div>

这将呈现隐藏的html,否则它将保持隐藏状态。将标志初始化为$scope.whenAdmission=false;在页面加载时

使用ng show/ng hide很简单

如果您有一个按钮:

<button class="primary" ng-click="addmission()" >Addmission</button>

<div class="boxheader" ng-controller="edit_vision_missionCtrl" ng-show="whenAdmission" ng-cloak>
//all other code
</div>

这将呈现隐藏的html,否则它将保持隐藏状态。将标志初始化为$scope.whenAdmission=false;在页面加载时

有几种插入新DOM节点的方法

在您的用例中,由于您有一个HTML文本字符串,并且希望告诉浏览器将其解析为HTML元素,因此您需要使用
innerHTML

var myElement = document.getElementById('myElement')
var someHTML = '<div style="color: blue;">I am <b>blue</b>!</div>"

myElement.innerHTML = someHTML;
var myElement=document.getElementById('myElement'))
var someHTML='我是蓝色的!"
myElement.innerHTML=someHTML;
这将告诉浏览器将HTML字符串解析为元素,并将它们插入到
myElements
子树中

因为您使用的是jQuery,所以可以使用jQuery的
$(…).html()
,它可能会调用
innerHTML


现在,由于您正在使用Angular,您可能希望将HTML作为模板加载,并将其作为部分呈现,而不是自己直接操作DOM(让Angular来完成这项工作)。下面是一篇关于动态加载模板的好文章:

有几种插入新DOM节点的方法

在您的用例中,由于您有一个HTML文本字符串,并且希望告诉浏览器将其解析为HTML元素,因此您需要使用
innerHTML

var myElement = document.getElementById('myElement')
var someHTML = '<div style="color: blue;">I am <b>blue</b>!</div>"

myElement.innerHTML = someHTML;
var myElement=document.getElementById('myElement'))
var someHTML=‘我是蓝色的!’
myElement.innerHTML=someHTML;
这将告诉浏览器将HTML字符串解析为元素,并将它们插入到
myElements
子树中

因为您使用的是jQuery,所以可以使用jQuery的
$(…).html()
,它可能会调用
innerHTML


现在,由于您正在使用Angular,您可能希望将HTML作为模板加载,并将其作为部分呈现,而不是自己直接操作DOM(让Angular来完成这项工作)。这里有一篇关于动态加载模板的好文章:

您不应该直接从控制器操作DOM。这是一个可怕的想法,永远不应该这样做。我要做的是编写一个简单的指令,或者如果你真的很懒,就使用ng include。但是,看在上帝的份上,不要直接从控制器向DOM中插入内容。如果您编写一个指令,您可以在所有项目中不断重复使用同一元素,相信我,这节省了大量时间


学习如何编写指令。乍一看,它们有点复杂,但它们确实是Angular的强大功能。

您不应该直接从控制器操纵DOM。这是一个可怕的想法,永远不应该这样做。我要做的是编写一个简单的指令,或者如果你真的很懒,就使用ng include。但是,看在上帝的份上,不要直接从控制器向DOM中插入内容。如果您编写一个指令,您可以在所有项目中不断重复使用同一元素,相信我,这节省了大量时间


学习如何编写指令。乍一看,它们有点复杂,但它们确实是Angular的强大功能。

负责处理单击的代码在哪里?您应该在html的某个地方有一个
ng click=“addmission()”
。可能在这里:
我在调用函数的地方添加了代码,这不是很有棱角感。通常,您必须使视图和数据完全解耦。退房如果需要相同类型的多个视图。通常,您将数据存储在服务中并加载一个通用视图。并通过控制器动态添加数据。您是否在寻找完整的角度解决方案,然后我可以使用上面的用例,但使用解耦视图和数据的上下文来回答。是的,这会很有帮助…谢谢这里是负责处理点击的代码?您应该在html的某个地方有一个
ng click=“addmission()”
。可能在这里:
我在调用函数的地方添加了代码,这不是很有棱角感。通常,您必须使视图和数据完全解耦。退房如果需要相同类型的多个视图。通常,您将数据存储在服务中并加载一个通用视图。并通过控制器动态添加数据。您是否在寻找完整的角度解决方案,然后我可以使用上述用例,但使用解耦视图和数据的上下文来回答。是的,这将非常有用…感谢我必须动态添加它们,可能不止一次…因此我认为ng show将不起作用我必须动态添加它们,可能不止一次……所以我认为ng秀不起作用