2016-09-30 64 views
-1

样式元素:Thaks为@ Traktor53和@PHPglue如何隐藏回答HTML

我的网页上有输入HTML代码和一个用于输入CSS一个textarea。结果显示在一个div中。

<textarea id="c" placeholder="CSS code here..." rows="10" cols="50"> 
//What the user enters here will become a new <style> tag 
</textarea> 

<div id="pane"> 
//This is where it will be displayed 
</div><br> 
<button type="button" onclick="handleToggle()">Toggle</button> 

我正在尝试使用一个javascript函数来关闭某个特定的样式元素。我想要删除样式标签及其内容或使其不显示内容。

编辑:这是我的javascript

function handleToggle(){ 

     var pane = document.getElementById('pane'); 
     var css = document.getElementById('c'); 

     var x = document.getElementById('cssStyle'); 

     x.addClass("test"); 

这是怎样的风格创建

function handleLaunch(){ 
     var div = document.getElementById('pane'); 
     var css = document.getElementById('c'); 

     var style = document.createElement('style'); 
     style.id = "cssStyle" 
     style.type = 'text/css'; 
     style.innerHTML = document.getElementById('c').value; 
     document.getElementsByTagName('head')[0].appendChild(style) 
+0

你是什么意思,样式标签不可见? – adeneo

+0

我不希望显示该样式标签。如果这不可能,那么我想删除样式标签。 – Sidward

+2

令人困惑的是,您想要一个默认情况下不会显示的样式标签,而不会显示?你的意思是你想要一个风格标签,但风格不适用?如果是这样,不要创建一个样式标签? – adeneo

回答

1

你可以使用

// create STYLE element in javascript 
var se =document.createElement("STYLE"); 
se.id = "myCSS"; // for example 
se.innerText = "textarea { background-color: yellow"; // for example 
document.body.appendChild(se); 

添加一个风格元素与ID,例如,然后再使用标准DOM操作删除样式元素:

// remove existing element 
document.getElementById("myCSS").remove(); 

或者您可以更新以前使用或JavaScript或<脚本>标签创建的STYLE元素的内容,例如:

// change content of existing STYLE element: 
document.getElementById("myCSS").innerText = "textarea { background-color: blue"; 


附加信息。

  1. ChildNode.remove是DOM4建议的一部分,在IE中不支持。较旧的语法是删除一个DOM元素作为父母的孩子:ChildNode.parentNode.removeChild(ChildNode);

  2. 虽然InnerText的广泛支持,并出现在DOM living standard,它不是在使用textContent,而不是目前的W3C DOM标准的支持。

+0

谢谢! remove()函数无法正常工作,但我使用了.innerText =“”并且它可以工作 – Sidward

+0

@Sidward - 不要忘记将此答案标记为已接受。请不要将新问题编入原始问题。也许你应该看看http://stackoverflow.com/help – enhzflep

+0

第一个回答的人很困惑,所以我想我需要编辑我的操作系统来澄清 – Sidward

-1

如果你想要的HTML元素被隐藏尝试在CSS

.class{ 
    display: none; 
} 
以下

编辑

看起来像addClassremoveClass无处不在。用标准的JavaScript可以实现这个可以用

function handleToggle(){ 
    // get the element 
    var element = document.getElementById('pane'); 

    // toggle 
    element.classList.toggle(".class"); 

} 

这会隐藏和显示元素。它不会在里面插入任何代码,如果这就是你想要的。

希望这会有所帮助!如果您有问题,让我知道

+0

我在控制台中收到消息“element.addClass不是函数” – Sidward

+1

addClass和removeClass是jQuery的函数! – CMedina

+1

这是一个质量差的答案。它没有关注主帖中的问题,没有告诉它使用jQuery,没有解决问题,'element'未定义。 http://stackoverflow.com/help/how-to-answer –

0

visibility: hidden是CSS不是HTML。 HTML属性使用=而不是:进行分配。很多时候,这些属性与CSS或JavaScript属性相同,但这不是这种情况。

function removeLastStyleTag(){ 
    var s = document.getElementsByTagName('style'), l = s.length; 
    while(l--){ 
    var n = s[l]; 
    if(n.nodeName.match(/^style$/i)){ 
     n.parentNode.removeChild(n); l = 0; 
    } 
    } 
} 
+0

好的答案。有没有一种方法,我只能在特定的样式标签上进行此操作,而不是将其全部删除? – Sidward

+0

我应该停止循环。固定。现在它只是删除最后的样式标签,无论它在页面上。 – PHPglue

+0

哪里?当我在Firefox中测试它时,它工作正常。 – PHPglue