博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 使用js的CreateElement方法创建元素、样式表动态引入
阅读量:4124 次
发布时间:2019-05-25

本文共 8314 字,大约阅读时间需要 27 分钟。

一.动态创建link方式

我们可以使用link的方式.如下代码所示.

function addCssByLink(url){	var doc=document;	var link=doc.createElement("link");	link.setAttribute("rel", "stylesheet");    link.setAttribute("type", "text/css");    link.setAttribute("href", url);	var heads = doc.getElementsByTagName("head");	if(heads.length)		heads[0].appendChild(link);	else		doc.documentElement.appendChild(link);}

二.动态创建style方式

但是,这样的话,需要加载整个css文件,但是那样有可能浪费一个http请求并占用一个服务器请求数,并等待上一段下载时间,所以,Firebug Lite采取的是将css代码写在js中,然后动态创建style标签的方法,正如下面所示

function addCssByStyle(cssString){	var doc=document;	var style=doc.createElement("style");	style.setAttribute("type", "text/css");	if(style.styleSheet){// IE		style.styleSheet.cssText = cssString;	} else {// w3c		var cssText = doc.createTextNode(cssString);		style.appendChild(cssText);	}	var heads = doc.getElementsByTagName("head");	if(heads.length)		heads[0].appendChild(style);	else		doc.documentElement.appendChild(style);}

 

这样的话,如果是较少的代码,可以比较方便的实现到动态加载css的效果,但是如果为了方便维护和管理,并没有等待时间限制,使用link方式更加合适

 

//*************************************//

//定义方法创建一个label标签

//*************************************//

var createLabel = function(id, name, value) {

    var label_var = document.createElement("label");

 

    var label_id = document.createAttribute("id");

    label_id.nodeValue = id;

 

    var label_text = document.createTextNode(value);

 

    label_var.setAttributeNode(label_id);

    var label_css = document.createAttribute("class");

    label_css.nodeValue = "select_css";

    label_var.setAttributeNode(label_css);

    label_var.appendChild(label_text);

 

    return label_var;

}

 

 

//*************************************//

//定义方法创建input标签(主要为Text)

//id,name,value,type 分别代表创建标签的id,

//   名称(name),值(value),类型(type)

//  绑定Input方法事件,绑定方式如下(可以同时绑定多个事件方法):

//  "οnchange==alert('This Value is change success !');|οnblur==alert('This value is the beautiful one !');"

//*************************************//

var createInput = function(id, name, value, type, width, height, event) {

    var var_input = null;

    var input_event_attr_IE = "";

    if (event != null && event != "") {

        var event_array_IE = event.toString().split('|');

        for (var i = 0; i < event_array_IE.length; i++) {

            var event_IE = event_array_IE[i].split('==');

            input_event_attr_IE += " " + event_IE[0] + "='' ";

        }

    }

    try {//定义变量实现IE6.0和IE7.0兼容。

        var_input = document.createElement("<input " + input_event_attr_IE + ">");

    } catch (e) {

        var_input = document.createElement("input");

    }

 

    var input_id = document.createAttribute("id");

    input_id.nodeValue = id;

    var input_name = document.createAttribute("name");

    input_name.nodeValue = name;

    var input_type = document.createAttribute("type");

    input_type.nodeValue = type;

    var input_value = document.createAttribute("value");

    input_value.nodeValue = value;

    var input_style = document.createAttribute("style");

    var input_style_str = "";

 

    if (width != null && width != "") {

        input_style_str += "width:" + width + "px;";

    } else {

        input_style_str += "width:30px;";

    }

    if (height != null && height != "") {

        input_style_str += "height:" + height + "px;";

    }

 

    if (event != null && event != "") {

        var event_array = event.toString().split('|');

        for (var i = 0; i < event_array.length; i++) {

            var events = event_array[i].split('==');

            var input_event = document.createAttribute(events[0]);

            input_event.nodeValue = events[1];

            var_input.setAttributeNode(input_event);

        }

    }

 

    var_input.setAttributeNode(input_type);

    input_style.nodeValue = input_style_str;

    try {

        var_input.setAttributeNode(input_style);

    } catch (e) {

        width = (width == null || width == "") ? "30" : width;

        var_input.setAttribute("width", width);

        if (height != null && height != "") {

            var_input.setAttribute("height", height);

        }

    }

//    if (readonly != "") {

//        var input_readonly = document.createAttribute("readonly");

//        input_readonly.nodeValue = "readonly";

//        var_input.setAttributeNode(input_readonly);

//    }

 

    var_input.setAttributeNode(input_id);

    var_input.setAttributeNode(input_name);

    var_input.setAttributeNode(input_value);

 

    return var_input;

}

 

 

//******************************************************************//

//定义方法创建一个Select选择框的标签;

//*****   id   表示标签的标识id

//*****   name 表示标签的名称name

//*****   options表示标签要绑定的选择项(例如:"0231A563-专业类服务|02312177-维保类服务|……")

//*****   splitstr表示用来分割options的字符(如:'|')

//*****   splitchar表示分割键值对的分隔符(如:'-')

//*****   event 表示此标签对应的事件(当event==null时此标签不绑定事件)

//******************************************************************//

var createSelect = function(id, name, options, splitstr, splitchar, event, selectedValue) {

    var var_select = null;

    try {//处理IE6.0和IE7.0的兼容问题。

        var_select = document.createElement("<select οnchange='' >");

    } catch (e) {

        var_select = document.createElement("select");

    }

 

    var select_id = document.createAttribute("id");

    select_id.nodeValue = id;

    var select_name = document.createAttribute("name");

    select_name.nodeValue = name;

 

    if (event != null && event != undefined && event != "") {

        var select_change = document.createAttribute("onchange");

        select_change.nodeValue = event;

        var_select.setAttributeNode(select_change);

    }

    var_select.setAttributeNode(select_id);

    var_select.setAttributeNode(select_name);

    try {

        var_select.setAttribute("width", "100px");

    } catch (e) {

        var select_css = document.createAttribute("class");

        select_css.nodeValue = "select_css";

        var_select.setAttributeNode(select_css);

    }

 

    splitstr = (splitstr == "" || splitstr == null) ? "|" : splitstr;

    splitchar = (splitchar == "" || splitchar == null) ? "-" : splitchar;

 

    if (options != null && options != undefined && options.toString() != "") {

        options = (options.toString().lastIndexOf(splitstr) + 1 == options.toString().length) ? options.toString().substr(0, options.toString().length - 1) : options;

        var arrayOption = options.toString().split(splitstr);

        for (var i = 0; i < arrayOption.length; i++) {

            var temp_value = arrayOption[i].split(splitchar);

            var option = document.createElement("option");

            var option_value = document.createAttribute("value");

            option_value.nodeValue = temp_value[0];

            var option_text = document.createTextNode(temp_value[1]);

            option.setAttributeNode(option_value);

            option.appendChild(option_text);

 

            var_select.appendChild(option);

            if (selectedValue != null && selectedValue != "") {

                if (temp_value[0] == selectedValue || temp_value[1] == selectedValue) {

                    var_select.options[i].selected = true;

                }

            }

        }

    }

    return var_select;

}

 

//***************************************************//

//定义方法创建一个<a>标签;

//*****   id表示标签唯一表示id

//*****   name表示标签的名称name

//*****   value表示标签对应显示的文字(名称)

//*****   event表示标签对应的事件(当event==null时事件不绑定)

//*****   href表示标签的链接属性

//***************************************************//

var createA = function(id, name, value, event, href, target) {

    var var_a = null;

    try {

        var_a = document.createElement("<a οnclick='' target='_blank'>");  //这里创建必须为"<a οnclick='alert()'>"这种形式来创建否者不支持IE6.0和IE7.0

    } catch (e) {

        var_a = document.createElement("a");

    }

    var a_id = document.createAttribute("id");

    a_id.nodeValue = id;

    var a_name = document.createAttribute("name");

    a_name.nodeValue = name;

    href = (href == null || href == "") ? ("javascript:void(0);" || "#") : href;

    var a_href = document.createAttribute("href");

    a_href.nodeValue = href;

 

    var a_Text = document.createTextNode(value);

 

    var_a.setAttributeNode(a_href);

    var_a.setAttributeNode(a_id);

    var_a.setAttributeNode(a_name);

    if (target != null) {

        var target_href = document.createAttribute("target");

        target_href.nodeValue = "_blank";

        var_a.setAttributeNode(target_href);

    }

 

    if (event != "" && event != null && event != undefined) {

        var a_click = document.createAttribute("onclick");

        a_click.nodeValue = event;

        var_a.setAttributeNode(a_click);

    }

    var_a.appendChild(a_Text); //注意这个值绑定顺序,只能放在最后去绑定(不然不支持IE6.0和IE7.0)

 

    return var_a;

}

 

 

//******************************************//

//定义方法判断输入值是否为数字;

//*******   当flag=true时判断输入值是否为整数;

//******************************************//

var check_Is_Num = function(obj, flag) {

    var flag_var = false;

    var num = /^\d+$/; ///^\+?[1-9][0-9]*$/;

    //flag_var = /^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$/.test(obj);

    flag_var = /^\d+(\.\d+)?$/.test(obj);

    if (flag) {

        flag_var = num.test(obj);

    }

    return flag_var;

}

 

//定义方法删除节点。

var removeRowItem = function(obj) {

    var rowTr = obj.parentNode.parentNode;

    try {

        rowTr.removeNode(true);

    } catch (e) {

        rowTr.parentNode.removeChild(rowTr);

    }

}

 

String.prototype.Trim = function() {

    return this.replace(/(^\s*)|(\s*$)/g, "");

}

转载地址:http://delpi.baihongyu.com/

你可能感兴趣的文章
隐藏搜索框:CSS 动画正反向序列
查看>>
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>
8种ES6中扩展运算符的用法
查看>>
【视频教程】Javascript ES6 教程28—ES6 Promise 实例应用
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(下)
查看>>
【web素材】03-24款后台管理系统网站模板
查看>>
Flex 布局教程:语法篇
查看>>
年薪50万+的90后程序员都经历了什么?
查看>>
2019年哪些外快收入可达到2万以上?
查看>>
【JavaScript 教程】标准库—Date 对象
查看>>
前阿里手淘前端负责人@winter:前端人如何保持竞争力?
查看>>
【JavaScript 教程】面向对象编程——实例对象与 new 命令
查看>>
我在网易做了6年前端,想给求职者4条建议
查看>>
SQL1015N The database is in an inconsistent state. SQLSTATE=55025
查看>>
RQP-DEF-0177
查看>>
Linux查看mac地址
查看>>