博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决js获取innerHTML无法获取value的问题
阅读量:6274 次
发布时间:2019-06-22

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

hot3.png

<form id="f1">

<input type="text"><input type="text"><input type="text">
<textarea></textarea>
<select></select>
</form>
<button οnclick="alert(getHtml(true,'f1'))">获取表单innerHTML</button>
<button οnclick="setHTML(false,"f1")">设置div的innerHTML,不做处理</button>
<button οnclick="setHTML(true,"f1")">设置div的innerHTML,处理数据并且设置状态</button>
<div id="dv"></div>
<script>
    function setHTML(process,formID) {
        $('#dv').html(getHtml(process, formID));
        if (!window.ActiveXObject && process) { //处理标准浏览器下select对象的option选择问题
            var arr, selector = '', i;
            $('#dv option[selectedx]').each(function () {    $(this).attr('selected', true).removeAttr('selectedx');  });
            //textarea有value属性没用,不会显示在输入框内,需要用js设置过value属性一次
            $('#dv textarea').each(function () { $(this).val(this.getAttribute('value')); });
        }
    }
    function getHtml(process,formID) {
        if (window.ActiveXObject || !process) { return $("#" + formID).html(); }
        else
        {//标准浏览器,需要重新控件的value属性,要不返回容器的innerHTML输入的内容或者选择状态并不会通过innerHTML属性获取到
            $($("#" + formID)[0].elements).each(function () {
                switch (this.tagName) {
                    case 'INPUT':
                    case 'TEXTAREA':
                        switch (this.type)
                        {
                            case 'radio':
                            case 'checkbox':
                                if (this.checked) this.setAttribute('checked', true);
                                else this.removeAttribute('checked'); //要记得删除,要不默认的选择会随innerHTML一起返回
                                break;
                            default:
                                this.setAttribute('value', this.value);
                        }
                        break;
                    case 'SELECT':
                        $('option', this).removeAttr('selectedx').not(':selected').removeAttr('selected').end().filter(':selected').attr('selectedx', 'selected');
                        break;
                }
            });
            return $("#" + formID).html();
        }
    }
</script>

转载于:https://my.oschina.net/lichaoqiang/blog/192588

你可能感兴趣的文章
jdk6.0 + Tomcat6.0的简单jsp,Servlet,javabean的调试
查看>>
Android:apk签名
查看>>
2(2).选择排序_冒泡(双向循环链表)
查看>>
MySQL 索引 BST树、B树、B+树、B*树
查看>>
微信支付
查看>>
CodeBlocks中的OpenGL
查看>>
短址(short URL)
查看>>
C++零基础教程(一)——何谓编程
查看>>
第十三章 RememberMe——《跟我学Shiro》
查看>>
mysql 时间函数 时间戳转为日期
查看>>
索引失效 ORA-01502
查看>>
Oracle取月份,不带前面的0
查看>>
Linux Network Device Name issue
查看>>
IP地址的划分实例解答
查看>>
如何查看Linux命令源码
查看>>
运维基础命令
查看>>
Linux下的lds链接脚本简介(二)
查看>>
入门到进阶React
查看>>
C++每日练笔之日期类(基类)
查看>>
SVN 命令笔记
查看>>