【问题标题】:How can I add a button within an innerHTML section of a HTML div?如何在 HTML div 的 innerHTML 部分中添加按钮?
【发布时间】:2014-10-29 03:33:09
【问题描述】:

我在 JavaScript 和 JQuery 方面是新手,在 html 和 css 方面知识渊博,但我有一些东西我已经研究了好几天了,我把头撞到桌子上却想不通。也许有人可以帮助我,任何提示,建议将不胜感激!

我有以下 HTML:

<div id="projects" class="fluid">
<button onClick="myFunction2()" class="viewprojectsclose">Close</button>
<button onclick="myFunction()" class="viewprojects">View Projects</button>
<div id="projectsimg">
</div>
<div id="projectstxt">
</div>
</div>

使用以下 JavaScript 和 JQuery:

function myFunction() {

document.getElementById("projectstxt").innerHTML = 'some text some text some text';
document.getElementById("projectstxt").style.borderBottom = "thin solid #000" ;     
document.getElementById("projectstxt").style.display = "block";  
document.getElementById("projectstxt").style.paddingBottom ="10px";     

         document.getElementById("projectsimg").style.padding = "100px" ;
         document.getElementById("projectsimg").style.background =     "url('../Assets/img/services/image1.png')" ;
         document.getElementById("projectsimg").style.backgroundRepeat = "no-repeat";
         document.getElementById("projectsimg").style.backgroundSize = "20%";
         document.getElementById("projectsimg").style.display = "block";
         document.getElementById("projectsimg").style.transition = "all 0.5s ease-in-out";
         document.getElementById("projectsimg").style.backgroundOrigin = "border-box";
         document.getElementById("projectsimg").style.marginTop = "5%";
;}  
function myFunction2() {
    document.getElementById("projectstxt").style.display = "none";
    document.getElementById("projectsimg").style.display = "none";
;}

$(document).ready(function()
  {
  $(".viewprojects").click(function(){
    $("#projects").animate({
        height:"300px"
        });
  });
  $(".viewprojectsclose").click(function(){
    $("#projects").animate({
        height:"80px"
        });
  });   
  });    

基本上我们有 2 个按钮(打开和关闭)。第一个打开图像和文本 DIV,第二个关闭。我要做的是在图像下方(在 div 内)添加另一个按钮,它将您重定向到特定页面。我可以在 HTML 中的图像 DIV 中添加一个常规按钮,但是当它加载页面时,该按钮默认显示在其上,尽管它应该仅在单击第一个按钮时出现(并打开 innerHTML)。这意味着我必须以某种方式在 JS 中添加它。如果我按下关闭并重置 div,则该按钮仅在单击第一个 OPEN 按钮时才会出现。我不知道什么是 JS 脚本来防止一开始加载按钮,只有当我点击 JS 中的第一个按钮时才加载它。

任何帮助都是神圣的!提前谢谢!

【问题讨论】:

  • div 的display:none 是否以开头?
  • 您可以先创建对象并将显示设置为无,而不是使用 javascript 创建对象。然后在你想显示它们时将显示设置为阻止。
  • @artm 我可以使用 display:none;是的,但如果我这样放,它不会加载 jquery 动画...
  • @aj_r 是的,我已经这样做了..基本上我将它设置为 display:none in css 并在 JS 中阻止它应该加载它但 JQuery 动画没有成功...
  • 您也可以发布您的 html 吗?或者创建一个 jsfiddle。

标签: javascript jquery html innerhtml


【解决方案1】:

是的,存在冲突,因为您在 javascript jquery 中为您的按钮覆盖了click 处理程序。你根本不必这样做。您应该在 MHO 中坚持使用 Jquery,并在 click 处理程序中添加适当的 DOM 更改,如下所示:

$(document).ready(function()
{      
 $(".viewprojects").click(function(){

  //Animate first
   $("#projects").animate({
     height:"300px"
     });

 //Update DOM 
 document.getElementById("projectstxt").innerHTML = 'some text some text some text';
 document.getElementById("projectstxt").style.borderBottom = "thin solid #000" ;     
 document.getElementById("projectstxt").style.display = "block";  
 document.getElementById("projectstxt").style.paddingBottom ="10px";     

 document.getElementById("projectsimg").style.padding = "100px" ;
 document.getElementById("projectsimg").style.background =         "url('../Assets/img/services/image1.png')" ;
 document.getElementById("projectsimg").style.backgroundRepeat = "no-repeat";
 document.getElementById("projectsimg").style.backgroundSize = "20%";
 document.getElementById("projectsimg").style.display = "block";
 document.getElementById("projectsimg").style.transition = "all 0.5s ease-in-out";
 document.getElementById("projectsimg").style.backgroundOrigin = "border-box";
 document.getElementById("projectsimg").style.marginTop = "5%";
});


 $(".viewprojectsclose").click(function(){
  document.getElementById("projectstxt").style.display = "none";
  document.getElementById("projectsimg").style.display = "none";

  //Animate the div
  $("#projects").animate({
    height:"80px"
    });
 });   

 });    

现在,我刚刚重组了您在问题中发布的代码,让您了解如何修复它。代码未经过清理,为了简单起见,应根据 Jquery 规范适当更改语法。这是一个简单的练习,您可以自己完成。

PS:我已经更新了fiddle 以合并我刚才提到的更改,并且它似乎工作正常。同样,我知道 Jquery 语法不合适,但它是故意的。无论如何,我希望它能让你朝着正确的方向开始。此外,在使用 javascript 和 Jquery 时,请坚持使用纯 javascript 或 jquery 之一,因为您可以在 jquery 中实现您需要的几乎所有功能,并且它更加通用且易于使用。

【讨论】:

  • 非常感谢 Vivek,它运行良好!所以基本上它是先加载 DOM,然后再加载 JQuery,这就是冲突的原因。现在我明白发生了什么。关于 JavaScript 和 JQuery,我确实有很多东西要学习,您的建议非常受欢迎。我真的很感激,你让我免于很多麻烦。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
相关资源
最近更新 更多