js 使用js的CreateElement方法创建元素、样式表动态引入

一.动态创建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, "");

}

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 除了可以使用link元素style元素和@import语句引入CSS样式表之外,还可以使用以下方式引入CSS: 1. 内联样式(inline style):可以将CSS样式直接写入HTML标签的style属性中,例如: ``` <p style="color: red; font-size: 16px;">这是一段红色的16号字体文本。</p> ``` 2. CSSOM(CSS Object Model):通过JavaScript操作CSS样式表,例如: ``` var styleSheet = document.createElement('style'); styleSheet.innerHTML = 'p {color: red;}'; document.head.appendChild(styleSheet); ``` 这段代码会动态创建一个style元素,并将CSS样式表写入其中,然后将该元素添加到文档头部。使用CSSOM可以实现动态修改和控制样式表的效果。 3. 嵌入式样式(embedded style):在HTML文档中使用style元素定义样式表,例如: ``` <head> <style> p {color: red;} </style> </head> <body> <p>这是一段红色文本。</p> </body> ``` 嵌入式样式的优点是可以在同一HTML文件中定义样式表,方便管理和维护。但是如果要修改样式,需要修改HTML文件。 总之,除了link元素style元素和@import语句之外,还有很多其他的方式可以引入CSS样式表,根据具体情况选择适合的方式即可。 ### 回答2: 除了link元素style元素和@import之外,还可以使用内联样式、@media规则和JavaScript动态添加样式。 1. 内联样式:可以直接在HTML元素使用style属性来添加样式。这种方法适用于只对特定元素应用样式的情况,但不利于样式的复用和维护。 2. @media规则:可以根据不同的媒体类型或特定的媒体查询条件来引入不同的样式。通过@media规则可以实现响应式布局,使得网页可以根据不同的设备屏幕尺寸自动适应样式。 3. JavaScript动态添加样式:可以使用JavaScript通过DOM操作动态创建style元素,然后将样式规则插入其中,最后将该style元素添加到HTML文档中。这种方法适用于需要根据特定事件或条件来动态改变样式的情况,比如用户交互时的样式修改。 以上是除了link元素style元素和@import之外的一些引入CSS样式的方法。根据具体情况选择合适的方法使用CSS,可以更好地组织和维护样式代码,提升页面的性能和用户体验。 ### 回答3: 除了link元素style元素和@import,还可以使用内联样式(inline style)和@import的其他形式来引入CSS。 1. 内联样式:可以在HTML文档中的元素标签的style属性中直接编写CSS样式,这种方式是将CSS代码直接嵌入到HTML中,可以在临时需要样式的地方使用,但不便于维护和复用。 例子: ```html <p style="color: red;">这是红色的文字</p> <div style="background-color:#eaeaea;"></div> ``` 2. @import 的其他形式:除了可以使用<link>元素外,在<style>元素中也可以使用@import导入外部样式表,通过在样式表中再次使用@import可以导入其他样式表,形成级联的样式表。 例子: ```html <style> @import url("style1.css"); @import url("style2.css"); </style> ``` 这种方式可以灵活地按需引入样式,但要注意导入的顺序和层级关系可能会影响样式的继承和覆盖规则。 综上所述,除了常用的link元素style元素和@import,还可以使用内联样式和@import的其他形式来引入CSS样式,根据实际需要选择合适的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值