示例代码：
let thObjs = document.getElementById(eleID)
.querySelector('thead')
.querySelector('tr')
.querySelectorAll('th');

第一，可以用 document.getElementById(eleID)选中第一级元素，这个eleID，就是元素的属性里的id的值。
querySelector（‘thead’） 返回第一个thead元素。
querySelector('tr') 同上
querySelectorAll('th'); 返回所有th元素。这个是数组。


for (var thObjNum of thObjs) {
    let fieldname = thObjNum.getAttribute('fieldname')
    let fieldclass = thObjNum.getAttribute('class');
}
.getAttribute 获取元素的属性。比如<th fieldname="aaa" class="bbb">
    可以获取到aaa 或者 bbb

增加事件
let that=this;
thObjNum.addEventListener('click', function () {

                    //判断当前为升序还是降序
                    if (this.getAttribute('class') == 'sorting_desc') {
                        sort = ' asc '
                        this.setAttribute('class', 'sorting_asc')
                    } else {
                        sort = ' desc '
                        this.setAttribute('class', 'sorting_desc')
                    }
                    this.setAttribute('class', 'sorting_asc')
                    that.sortField = fieldname;
                    that.sortType = sort;
                    that.refresh.bind(that);
                    that.refresh();

                });
再强调一下作用域的问题，在这个function里面的this，已经是thObjNum对象，外面的class对象的this，已经不在这个区域里
如果想在这个代码区域里使用，必须在func之外增加that（这个也可以用别的名字，比如_this这种。
这里面有一个问题，就是在绑定事件时，如果在事件发生时调用了其他方法，比如这里的
that.refresh();
方法，在refresh方法中，肯定无法直接使用本class的this了，但是数据怎么取？
我们看到在示例方法里，class的this，已经变成了that。
那么办法就是
that.refresh.bind(that);
实际上bind了之后，refresh方法中的this，就是这个that，也就是class的this

这里面实际上有个问题，就是function之间的传参问题。在同一个class里，各个function之间如果产生调用，传递参数
是个很麻烦的事。尤其在异步操作中，比如这个在event发生的时候调用的函数。
那么实际上，我最后走了小程序的结构，实际上我觉得小程序也是被逼着走到这条路的。
所有的数据都放到this里，比如this.a ,this.b  然后任何function中都可以获取或者更改this.name的数据。
这里的a和b，可以是值，也可以是对象。