`
gaoyu
  • 浏览: 273965 次
  • 来自: 云南大理
社区版块
存档分类
最新评论

不为人知的JS调用样式的方法---document.createElement().addRule(..)

 
阅读更多

原文:http://www.10000it.net/javascript/20090808/731.html

很多人可能在调用css样式都是使用传统的方式调用其实有很多方法可以进行调用,如使用内嵌样式,在html直接加入样式,给定外部样式文件,在外部样式文件中使用 @import

url(样式文件路径),这些都是大家常用的,其实还有就是使用javascript进行样式的定义。

第一种:

var style = document.createElement(’link’);
style.href = ’style.css’;
style.rel = ’stylesheet’;
style.type = ‘text/css’;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style);

第二种简单:

document.createStyleSheet(style.css);

动态的 style 节点,使用程序生成的字符串:

var style = document.createElement(’style’);
style.type = ‘text/css’;
style.innerHTML=”body{ background-color:blue; }”;
document.getElementsByTagName(’HEAD’).item(0).appendChild(style);

但是在上面只能在Firefox兼容,在IE里却不支持。

var sheet = document.createStyleSheet();
sheet.addRule(’body’,'background-color:red’);

如果按照上面的话就能成功,但是很麻烦,要把字符串拆开写。

我一直在搜索着用javascript定义样式的代码,终于找到了,代码如下。

document.createStyleSheet(”javascript:’body{background-color:blue;’”);

但用上面的javascript代码唯一的缺点就是url 最大 255 个字符,长一点的就不行了,经过 SXPCrazy 提示,将代码进行修改成如下:

window.style=”body{background-color:blue;”;
document.createStyleSheet(”javascript:style”);

完美解决!!代码:

<script>
function blue(){
if(document.all){
window.style="body{background-color:blue;";
document.createStyleSheet("javascript:style");
}else{
var style = document.createElement('style');
style.type = 'text/css';
style.innerHTML="body{ background-color:blue }";
document.getElementsByTagName('HEAD').item(0).appendChild(style);
}
}
</script>

以上是完整代码!
本文关键字 javascript,网页设计,javascript调用样式,疯狂IT

不为人知的JS调用样式的方法---document.createElement().addRule(..)  

 

 

分析代码时,发现自己的盲点——document.createElement(),冲浪一番,总结了点经验。

 

      document.createElement()是在对象中创建一个对象,要与appendChild() 或 insertBefore()方法联合使用。其中,appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

 

      下面,举例说明document.createElement()的用法。<div id="board"></div>

例1:

        <script type="text/javascript">
            var board = document.getElementById("board");
            var e = document.createElement("input");
            e.type = "button";
            e.value = "这是测试加载的小例子";
            var object = board.appendChild(e);
        </script>

效果:在标签board中加载一个按钮,属性值为“这是测试加载的小例子”。 

       

例2:

        <script type="text/javascript">
            var board = document.getElementById("board");
            var e2 = document.createElement("select");
            e2.options[0] = new Option("加载项1", "");
            e2.options[1] = new Option("加载项2", "");
            e2.size = "2";
            var object = board.appendChild(e2);
        </script>

效果:在标签board中加载一个下拉列表框,属性值为“加载项1”和“加载项2”。 

        

例3:

        <script type="text/javascript">
            var board = document.getElementById("board");           
            var e3 = document.createElement("input");
            e4.setAttribute("type", "text");
            e4.setAttribute("name", "q");
            e4.setAttribute("value", "使用setAttribute");
            e4.setAttribute("onclick", "javascript:alert('This is a test!');");           
            var object = board.appendChild(e3);
        </script>

效果:在标签board中加载一个文本框,属性值为“使用setAttribute”。 当点击这个文本框时,会弹出对话框“This is a test!”。

 

        根据上面例子,可以看出,可以通过加载对象的属性来设置,参数是相同的。使用e.type="text" 和 e.setAttribute("type","text")效果是一致的。

       

        下面,我们用实例来讲述一下appendChild() 方法和insertBefore() 方法的不同

        比如我们要在下面这个div中插入一个子节点P时:<div id="test"><p id="x1">Node</p><p>Node</p></div>

我们可以这样写:

<script type="text/javascript">
  var oTest = document.getElementById("test");
  var newNode = document.createElement("p");
  newNode.innerHTML = "This is a test";
  //测试从这里开始
  //appendChild方法:
  oTest.appendChild(newNode);
  //insertBefore方法:
  oTest.insertBefore(newNode,null);
< /script>

      通过以上的代码,可以测试到一个新的节点被创建到了节点div下,且该节点是div最后一个节点。很明显,通过这个例子,可以知道appendChildhild和insertBefore都可以进行插入节点的操作。

   在上面的例子中有这样一句代码:oTest.insertBefore(newNode,null) ,这里insertBefore有2个参数可以设置,第一个是和appendChild相同的,第二却是它特有的。它不仅可以为null,还可以为:

<script type="text/javascript">
  var oTest = document.getElementById("test");
  var refChild = document.getElementById("x1");
  var newNode = document.createElement("p");
  newNode.innerHTML = "This is a test";
  oTest.insertBefore(newNode,refChild);
< /script>

效果:这个例子将在x1节点前面插入一个新的节点

 

又或:

<script type="text/javascript">
  var oTest = document.getElementById("test");
  var refChild = document.getElementById("x1");
  var newNode = document.createElement("p");
  newNode.innerHTML = "This is a test";
  oTest.insertBefore(newNode,refChild.nextSibling);
< /script>

效果:这个例子将在x1节点的下一个节点前面插入一个新的节点

 

还可为:

<script type="text/javascript">
  var oTest = document.getElementById("test");
  var newNode = document.createElement("p");
  newNode.innerHTML = "This is a test";
  oTest.insertBefore(newNode,oTest.childNodes[0]); 
< /script>

  这个例子将在第一子节点前面插入一个新的节点,也可以通过改变childNodes[0,1,...]来在其它位置插入新的节点

由于可见insertBefore()方法的特性是在已有的子节点前面插入新的节点,但例一中使用insertBefore()方法也可以在子节点列表末插入新节点的。两种情况结合起来,发现insertBefore()方法插入节点,是可以在子节点列表的任意位置。

  从这几个例子中得出:

  appendChild() 方法在节点的子节点列表末添加新的子节点。

  insertBefore() 方法在节点的子节点列表任意位置插入新的节点。

分享到:
评论

相关推荐

    JS写图层方法.document.createElement(div).htm

    JS写图层方法.document.createElement(div).

    javascript经典特效---友人信息搜索器.rar

    在Web开发中,JavaScript是一种不可或缺的脚本语言,它赋予网页动态交互的能力。在这个"友人信息搜索器"项目中,我们主要探讨如何利用JavaScript实现一个用户友好的信息检索系统。下面将详细阐述这个系统的核心知识...

    javascript经典特效---列表的增加删除.rar

    这可以通过`document.createElement()`、`innerHTML`属性或者`appendChild()`等方法实现。 例如,假设有一个按钮`&lt;button id="addButton"&gt;添加&lt;/button&gt;`,我们可以用以下JavaScript代码实现点击按钮后向列表添加新...

    javascript-document对象详解(下).zip

    其次,`29.javascript-document对象详解(下).txt`很可能是文档的文本版,详细解释了`document`对象的更多高级特性和方法。这可能包括`document.querySelector`和`document.querySelectorAll`,它们分别用于选择匹配...

    javascript经典特效---按钮上的说明文字.rar

    在JavaScript的世界里,实现按钮上的说明文字是一种常见的交互设计,它可以增强用户体验,提供更清晰的操作指导。本资源“javascript经典特效---按钮上的说明文字.rar”包含一个名为“按钮上的说明文字.htm”的文件...

    babel-plugin-transform-react-createelement-to-jsx:将React.createElement调用转换为JSX语法

    这对于转换开始时认为“我们不需要臭臭的编译器”的项目将已经编译的JS转换成可维护的东西(例如语法→ →→ react-createelement-to-jsx → 语法)安装$ npm install babel-plugin-transform-react-createelement-...

    javascript经典特效---框中左右选择.rar

    e.target.classList.add('active'); // 更新右侧内容 var rightContainer = document.getElementById('right-container'); rightContainer.innerHTML = detailElement.innerHTML; } }); ``` 在实际应用中,...

    javascript经典特效---改变表格的内容.rar

    1. **选择表格元素**:JavaScript提供了多种方法来选择表格元素,例如`document.getElementById()`、`document.querySelector()`、`document.querySelectorAll()`等。如果表格有特定ID,可以使用`getElementById`;...

    javascript经典特效---动态选择背景色.rar

    例如,`document.getElementById()`或`document.querySelector()`可以用来选取特定ID或CSS选择器匹配的元素,而`document.createElement()`和`appendChild()`则用于创建和添加新元素。 2. **事件监听**:JavaScript...

    javascript经典特效---不同内容的文字链接.rar

    JavaScript是一种广泛应用于网页和网络应用的编程语言,尤其在实现客户端动态效果方面有着不可或缺的地位。在本资源"javascript经典特效---不同内容的文字链接.rar"中,重点探讨的是如何使用JavaScript来实现文字...

    稍微好一点的document.createElement-JavaScript开发

    使用document.createElement:let el = document.createElement(“ div”)el.className =“包装器” let输入= document.createElement(“ input”)input.setAttribute(“ type”,“ text”)let button = ...

    javascript经典特效---图片放大镜程序.rar

    这包括使用`document.getElementById`、`document.querySelector`或`document.createElement`等方法。 2. **事件监听**:为了响应用户的鼠标移动,我们需要添加事件监听器。通常会使用`addEventListener`来绑定`...

    javascript经典特效---图片的花斑显示.rar

    1. DOM操作:通过`document.createElement()`创建新的HTML元素,然后用`appendChild()`或`insertBefore()`方法将它们添加到页面上。 2. CSS3属性:使用`transform`属性进行位移、缩放和旋转,`animation`属性创建...

    jdom-1.1.zip jdom-1.1.jar jdom.jar jdom库 jdom操作xml

    例如,你可以创建一个`SAXBuilder`实例,然后调用其`build()`方法读取XML文件并将其转换为`Document`对象。 `jdom-b3-docs.zip`可能包含JDOM的API文档,这对于理解和使用库中的各种类和方法至关重要。开发者可以...

    javascript经典特效---input框的增加.rar

    2. **DOM操作**:使用`document.createElement`创建新的input元素,`element.setAttribute`设置属性,如type(文本、密码等)、name(用于识别数据)等。然后,使用`parentElement.appendChild`将新元素添加到目标...

    Document对象内容集合

    ### Document对象内容集合 在网页开发中,Document对象是浏览器为用户提供的重要接口之一,它代表了整个HTML或XML文档,并提供了访问和操作文档结构的方法。本文将深入解析Document对象的相关属性与方法,帮助读者...

    javascript经典特效---图片的分割与合并.rar

    先创建一个Canvas元素,然后获取其2D渲染上下文`ctx`,并调用`drawImage()`方法。 ```javascript let canvas = document.createElement('canvas'); let ctx = canvas.getContext('2d'); ctx.drawImage(img, 0, 0, ...

    javascript经典特效---发信(四).rar

    4. **DOM操作**:通过`document.getElementById`、`document.querySelector`或`document.createElement`等方法操作DOM元素,更新页面状态,如显示发送成功或失败的提示。 5. **模拟效果**:可能包含一些动画效果,...

    javascript经典特效---星星满天闪烁.rar

    在星星闪烁特效中,可能需要动态生成大量的星星元素,然后使用`document.createElement()`,`appendChild()`等方法将它们添加到页面上。 3. **JavaScript定时器**:利用`setInterval()`或`setTimeout()`函数可以...

    javascript经典特效---去掉图片链接周围虚线.rar

    这在某些设计风格中可能并不符合预期,因此我们需要找到方法来去掉这个虚线边框。本主题围绕“JavaScript经典特效——去掉图片链接周围虚线”展开,我们将探讨如何利用JavaScript来解决这个问题。 首先,我们需要...

Global site tag (gtag.js) - Google Analytics