DOM编程_htmlformelement htmlinputelement-程序员宅基地

技术标签: html5  前端网页设计  js  html  javascript  

DOM模型概述

DOM是文档对象模型(Document Object Model)的简称,接住DOM模型、可以将结构化文档转换成DOM树,程序可以访问、修改书里的节点,也可以新增、删除树里的节点,陈哥需操作这颗DOM树时,结构化文档也会随之动态改变,所以,掌握了DOM编程模型后,就拥有了使用JavaScript脚本动态修改HTML的能力

DOM模型中HTML元素之间的继承关系

DOM为常用的HTML元素提供了一套完整的继承体系,从页面的document对象到每个常用的HTML元素,DOM模型都提供了对应的类,每个类都提供了相应的方法来操作DOM元素本身、属性及其子元素
DOM为HTML元素提供了一种简单的继承关系,DOM模型里的HTML元素的继承关系如图
在这里插入图片描述
图中标粗的4个元素:Node,Document,Element,htmlElement都是普通HTML元素的超类,他们不直接对应于HTML页面控件,但是他们所包含的方法可以被其他页面元素调用,
HTML其他元素

  • HTMLDocument: 代表HTML文档本身。
  • HTMLBodyElement: 代表HTML文档中的<bod…/>控件。
  • HTMLDivElement: 代表HTML文档中的普通…>控件。
  • HTMLFormElement: 代表HTML文档中的表单控件。
  • HTMLSelectElement: 代表HTML文档中的列表框、下拉列表控件。
  • HTMLOptionElement: 代表HTML文档中的列表框选项控件。
  • HTMLIFrame: 代表HTML文档中的iframe…>控件。
  • HTMLInputElement: 代表HTML文档中的单行文本框、密码框、按钮等控件。
  • HTMLTableElement: 代表HTML文档中的表格控件。
  • HTMLTableCaptionElement: 代表HTML文档中表格的标题控件。
  • HTMLTableRowElement: 代表HTML文档中表格的表格行控件。
  • HTMLTableColElement: 代表HTML文档中表格的列控件。
  • HTMLTableCellElement: 代表HTML文档中表格的单元格控件。
  • HTMLTextAreaElement: 代表HTML文档中的多行文本域控件。
  • HTMLOLElement: 代表HTML文档中的有序列表控件。
  • HTMLULElement: 代表HTML文档中的无序列表控件。
  • HTMLLIElement: 代表HTML文档中的列表项控件。
    HTML元素之间的斧子关系有比较严格的先知,例如,HTMLCellElement通常只能作为HTMLColElement的子元素使用
HTML元素之间常见的包含关系

有一些HTML元素至今可以互相嵌套,如< div />之间可以相互嵌套,但有一些HTML元素则不可互相嵌套,例如td元素只能作为tr元素的子元素,option元素只能作为select元素的子元素,下入描述了常用HTML的元素之间的包含关系
在这里插入图片描述
HTML对象作为整个HTML文档最大的对象,里面可以包含一个HTMLbodyElement对象,HTML文档还有两个对象体系:表单对象和表格对象。

  • 表格对象可以包含基本的输入对象,还可以包含< select />元素,< select />元素可以包含多个< option />元素
  • 表格对象可以包含标题控件,还可以包含多个表格行控件,每个表格行又可以包含多个单元格控件

使用DOM元素增加子元素时,必须注意元素之间的合理包含关系,例如,不要为td元素添加tr子元素,虽然语法上没有错误,但这种结构在HTML文档上无法显示;在定义< table />时,至少要为其怎加一个< tr />元素,否则该表格奖没有任何显示

访问HTML元素

为了动态的修改HTML元素,必须能访问HTML元素,DOM提供了两种方式来访问HTML元素

  • 根据ID访问HTML元素
  • 根据CSS选择器访问HTML元素
  • 利用节点关系访问HTML元素
根据ID访问HTML元素
  • document.getElementById(idVal)返回文档中id属性值为idVal的HTML元素

在设计网页时,建议为每一个标签设置一个id元素,这样就可以通过document.getElementById()方式在JavaScript中定位到具体的HTML元素,这样就可以很方便的修改它们了

根据CSS选择器访问HTML元素
  • Element querySelector(selectos)该方法的参数即可是一个CSS选择器,也可使用逗号隔开的多个CSS选择器,该方法返回HTML文档中的第一个符合选择器参数的HTML元素。
  • Nodelist querySelectorAll(selectros)该方法与前一个方法的用法类似,只是该方法将返回所有符合CSS选择器的HTML元素。

对于制定了唯一id属性值的HTML元素,既可以使用getElementById()方法来获取,也可使用此处的querySelector()方法来获取,此处只要传入CSS的ID选择器(#ID)即可
下面一个例子是使用querySelectorAll()的例子

<head>
    <script type = "text/javascript">
        var change = function(){
     
            var divList = document.querySelectorAll("div");
            alert(divList);
            for (var i in divList){
     
                divList[i].innerHTML = "测试内容" + i;
                divList[i].style.width = "300px";
                divList[i].style.height = "50px";
                divList[i].style.margin = "10px";
                divList[i].style.backgroundColor = "#faa"
            }
        }
    </script>
</head>
<body>
    <div></div>
    <div></div>
    <div></div>
    <input type = "button" οnclick="change();" value = "修改全部div元素"/>
</body>

上面页面代码中定义了3个< div />元素,粗体代码使用querySelectorAll(“div”)获取了页面所有的div,于是返回了所有div元素组成的NodeList,然后采用遍历循环,将NodeList中包含的所有HTML元素都设置了同样的Style样式

利用节点关系访问HTML元素

一旦获取了某个HTML元素,由于该元素实际上与DOM树的某个节点对应,因此可以利用节点之间的父子、兄弟关系来访问HTML元素

  • Node parentNode:返回当前节点的父节点。只读属性。
  • Node previousSibling:返回当前节点的前一个兄弟节点。只读属性。
  • Node nextSibling:返回当前节点的后一个兄弟节点。只读属性。
  • Node[] childNodes:返回当前节点的所有子节点。只读属性。
  • Node[] getElementsByTagName(tagName);返回当前节点的具有指定标签名的所有
    子节点。
  • Node firstChild:返回当前节点的第一个子节点。只读属性。
  • Node lastChild:返回当前节点的最后一个子节点。只读属性。
<body>
    <ol id="books">
        <li id="one">1</li>
        <li id="two">2</li>
        <li id="three" class= "selected">3</li>
        <li id="fore">4</li>
        <li id="five">5</li>
        <li id="six">6</li>
    </ol>
    <input type = "button" value = "父节点" onclick = " change(curTarget.parentNode);"/>
    <input type = "button" value = "第一个" onclick = " change(curTarget.parentNode.firstChild.nextSibling);"/>
    <input type = "button" value = "上一个" onclick = " change(curTarget.previousSibling.previousSibling);"/>
    <input type = "button" value = "下一个" onclick = " change(curTarget.nextSibling.nextSibling);"/>
    <input type = "button" value = "最后一个" onclick = " change(curTarget.parentNode.lastChild.previousSibling);"/>
    <script type = "text/javascript">
         var curTarget = document.getElementById("three");
         var change = function(target){
     
             alert(target.innerHTML);
         }
    </script>
</body>

上面id为three的li标签被标记为了当前元素,于是5个按钮点击后便会分别反悔当前元素的“父元素”、“第一个”、“上一个”、“下一个”、“最后一个”等。

注意

在我们平常编写程序时,习惯将同级元素并列显示,即
在这里插入图片描述
但在JavaScript中,父级元素ol和第一个li标签之间,会认为是还有一个节点,即他们之间的空格。
所以在程序中ol节点一共包含13个子节点,包含6个li节点,以及7个空白节点。访问上一个和下一个兄弟节点,调用了两次previousSibling、nextSibling,即上两个和下两个,这是正确的。

访问表单控件

表单在DOM中由HTMLFormElement对象表示,该对象除了可调用前面介绍的基本属性
和方法之外,还拥有如下几个常用属性。

  • action:返回该表单的action属性值,该属性用于指定表单的提交地址。读写属性。
  • elements:返回表单内全部表单控件所组成的数组。使用该数组可以访问该表单内的
    任何表单控件。只读属性。
  • length: 返回表单内表单域的个数,该属性等于elements.length的值。只读属性。
  • method: 返回该表单的method属性,该属性通常有POST和GET两个值,默认采用
    GET方式。该属性用于确定表单发送请求的方式。读写属性。
  • target: 用于确定提交表单时的结果窗口,可以是self、_ parent、. _top、. blank等值。
    读写属性。除此之外,HTMLFormElement 对象还有如下两个常用方法。
  • reset(): 重设表单,将所有表单域的值设置为初始值。
  • submit(): 提交表单。因为HTMLFormElement提供了elements属性返回表单内的全部表单控件,因此可通过该属性访问表单里的表单控件。看如下页面代码。
<body>
    <form id="d" action="" method= "get ">
        <input name="user" type="text" /><br />
        <input name="pass" type= "text" /><br />
        <select name="color">
            <option value="red">红色</option>
            <option value="blue"> 蓝色</option>
        </select><br />
        <input type= "button" value="第一个" οnclick=
            "alert (document.getElementById('d') .elements[0].value);" />
        <input type="button" value="第二个"  οnclick=
            "alert (document.getElementById('d') . elements['pass'].value) ;" />
        <input type="button" value="第三个"  οnclick=
            "alert (document.getElementById('d') .color. value) ;" />
    </form>
</body>

为三个按钮绑定了三个点击事件,事件为访问表单内的表单控件。
如第一个点击事件,先通过getElementById()访问到名为d的form表单,然后通过elements[]访问其内部的第一个表单控件,.value表示获取控件内的值。

注意

实际上,HTMLFormElement 的elements 属性值并不是一个普通数组,而是一个HTMLCollection对象,该对象既可当成普通数组使用( 即通过数字索引访问元素),也可通过关联数组来访问(即通过字符串索引来访问元素)。因此上面页面的第一行代码可通过elements[pass],即表单里name或id属性值为pass的表单控件来访问一如果表单内有多个表单控件的name或id属性值为pass,则elements['pass ]将再次返回一个HTMLCOllection对象。不仅HTMLFormElement的elements属性值是HTMLCOllection对象。
实际上,HTML元素中许多可能返回对象数组的方法、属性值得到的都是-一个HTMLCollection对象,例如前面介绍的Node所提供的childNodes等。
根据_上面代码不难看出,HTMLFormElement 访问表单控件有如下3种语法。

  • formObj elements[index]:返回表单中第index个表单控件。
  • formObj elements['elementName]:返回表单中id或name为elementName的表单控件。
  • formObj. elementName:返回表单中id或name为elementName的表单控件。
    可以看到第二个和第三个方法的效果是一样的。如果表单里包含多个id相同的表单控件,则这两种方法将再次得到一个HTMLCollection对象

访问列表框、下拉菜单的选项

HTMLSelectElement代表一个列表框或下拉菜单,HTMLSelectElement对象除了可使用普通HTML元素的各种属性和方法外,还支持如下额外属性

  • form: 返回列表框、下拉菜单所在的表单对象。只读属性。
  • length:返回列表框、下拉菜单的选项个数。该属性的值可通过增加或删除列表框的
    选项来改变。只读属性。
  • options: 返回列表框、下 拉菜单里所有选项组成的数组。只读属性。
  • selectedIndex: 返回下拉列表中选中选项的索引,如果有多个选项被选中,则只返回第一个被选中选项的索引。读写属性。
  • type:返回下拉列表的类型,即是否允许多选。如果允许多选,则返回select-multiple;如果不支持多选,则返回select-one.

HTMLSelectElement的options 属性可直接访问列表框、下拉菜单的所有列表项,传入指
定索引即可访问指定列表项,语法格式如下。

  • select.options[index]: 返回列表框、下拉菜单的第index+1个选项。列表框、下拉菜单的选项由HTMLOptionElement对象表示,除了前面介绍的普通属性之外,该对象还提供了如下几个常用属性。
  • form: 返回包含该选项所处列表框、下拉菜单的表单对象。
  • defaultSelected: 返回该选项默认是否被选中。只读属性。
  • index: 返回该选项在列表框、下拉菜单中的索引。只读属性。当然也可以通过增加或删除列表框的选项来改变该选项的索引值。
  • selected: 返回该选项是否被选中,通过修改该属性可以动态改变该选项是否被选中。
  • text: 返回该选项呈现的文本,就是和之间的文本。对HTMLOptionElement 而言,该属性与innerHTML属性相同。
  • value:返回每个选项的value属性,可以通过设置该属性来改变选项的value值。
<body>
        <select id = "mySelect" name = "mySelect" size = "6">
            <option value = "one">1</option>
            <option value = "two">2</option>
            <option value = "three">3</option>
            <option value = "fore">4</option>
            <option value = "five">5</option>
            <option value = "six">6</option>
        </select><br />
        <input type ="button" value = "第一个" onclick = "change(curTarget.options[0]);" />
        <input type ="button" value = "上一个" onclick = "change(curTarget.options[curTarget.selectedIndex - 1]);" />
        <input type ="button" value = "下一个" onclick = "change(curTarget.options[curTarget.selectedIndex + 1]);" />
        <input type ="button" value = 最后一个 onclick = "change(curTarget.options[curTarget.length - 1]);" />
        <script tyle = "text/javascript">
            var curTarget = document.getElementById("mySelect");
            var change = function(target){
     
                alert(target.text)
            }
        </script>
</body>

curTarget变量获取到了当前的select元素,通过调用change()函数,可以读取到具体options内的文本,如options[0]是获取第一个option元素,options[curTarget.selectedIndex+1]是获取当前选中选项的下一个,注意中括号内的curTarget. 不能省略,虽然括号外的options已经标明是curTarget的了,但是若内部调用属性时不标明curTarget,也会报错说找不到selectedIndex
在这里插入图片描述

访问表格子元素

HTMLTableElement代表表格,HTMLTableElement 对象除了可使用普通HTML元素的各
种属性和方法外,还支持如下额外的属性。

  • caption: 返回该表格的标题对象。可通过修改该属性来改变表格标题。
  • HTMLCollection rows: 返回该表格里的所有表格行,该属性会返回<thead…>.<fo…>. 和<tboy.y…>元素里的所有表格行。只读属性。
  • HTMLCollection tBodies:返回该表格里所有<tbody…>元素组成的数组。
  • tFoot: 返回该表格里的fto…/>元素。
  • tHead: 返回该表格里的所有<thea…>元素。
    在获得一个表格之后,完全可以通过.上面提供的- -系列属性来访问表格“内容”,例如caption属性返回该表格标题,rows属性返回该表格的全部表格行…与前面介绍的完全相似,如果需要访问表格的指定表格行,只需要使用如下格式即可。
  • table.rows[index]: 返回该表格第index+ 1行的表格行。
    HTMLTableRowElement代表表格行, HTMLTableRowElement对象除了可使用普通HTML元素的各种属性和方法外,还支持如下额外的属性。
  • cells: 返回该表格行内所有的单元格组成的数组。只读属性。
  • rowIndex: 返回该表格行在表格内的索引值。只读属性。
  • sectionRowlndex: 返回该表格行在其所在元素(<tbod…>. <thea…>等元素) 的索引值。只读属性。

HTMLTableCellElement代表单元格,HTMLTableCellElement对象除了可使用普通HTML元素的各种属性和方法外,还支持如下额外索引值。只读属性。

修改HTML元素

访问到指定HTML元素之后,还可以对该元素进行修改,通过修改HTML元素就可以实现动态更新HTML页面的目的了。修改节点通常是修改节点的内容,修改节点的属性,或者修改节点的CSS样式。总结起来一句话:HTML元素的所有读写属性都可被修改!–旦HTML元素的属性值被修改,HTML页面上对应的内容也就随之改变。修改HTML元素通常通过修改如下几个常用属性来实现。

  • innerHTML: 大部分HTML页面元素如<i…>. <…>的 呈现内容由该属性控制。
  • value: 表单控件如<inpu…>、<textare…/>的呈现内 容由该属性控制。
  • className:修改HTML元素的CSS样式,该属性的合法值是一一个class选择器名。
  • style: 修改HTML元素的内联CSS样式。
  • options[index]: 直接对<elec…> 元素的指定列表项赋值,可改变列表框、下拉菜单的
    指定列表项。
<body>
    改变第<input id = "row" type = "text" size = "2" />行;
    第<input id = "cel" type = "text" size = "2" />列的值为:
    <input id = "celVal" type = "text" size = "16" /><br>
    <input id = "chg" type = "button" value = "改变" onclick = "change();" />
    <table id = "d" border = "1" style = "width:500px;border-collapse:collapse;">
        <tr>
            <td>11</td>
            <td>12</td>
        </tr>
        <tr>
            <td>21</td>
            <td>22</td>
        </tr>
        <tr>
            <td>31</td>
            <td>32</td>
        </tr>
    </table>
    <script type = "text/javascript">

        var change = function(){
     
            var tb = document.getElementById("d");
            var row = document.getElementById("row").value;
           
            row = parseInt(row);	//将数值强转为整数,以防输入小数时无法修改
            if(isNaN(row)){
     		//判断行数是否为整数
                alert("您要修改的行必须是整数");
                document.getElementById("row").value = "";
                document.getElementById("cel").value = "";
                return false;
            }
            var cel = document.getElementById("cel").value;
            if(isNaN(cel)){
     		//	判断列数是否为整数
                alert("您要修改的列必须是整数");
                document.getElementById("row").value = "";
                document.getElementById("cel").value = "";
                return false;
            }
            if(row > tb.rows.length || cel >tb.rows.item(0).cells.length){
     	//判断修改的表格是否在表格内
                alert("要修改的干预按个不在该表格内");
                document.getElementById("row").value = "";
                document.getElementById("cel").value = "";
                return false;
            }
            //开始修改
            tb.rows.item(row - 1).cells.item(cel - 1).innerHTML
                = document.getElementById("celVal").value;
        }
    </script>
</body>

增加HTML元素

JavaScript可以为DOM动态增加节点,程序为DOM数增加节点时,页面会动态的增加HTML元素,当阿需要为页面增加HTML元素时,应按照如下两个而步骤操作

  • 创建或复制接点
  • 添加节点
创建或复制节点

创建节点通常接住document对象的createElement方法实现,

  • document.createElement(Tag):创建Tag标签对应的节点
  • Node cloneNode(boolean deep)复制当前节点,当deep为true时,表示在复制当前节点的同时,复制该节点的全部后代节点;当deep为false时,表示仅复制当前节点
添加节点

当一个节点创建成功后,一定要将该节点添加到DOM树中才能显示出来。对于普通的节点,可采用Node对象的如下方法来添加节点。

  • appendChild(Node newNode):将newNode添加成当前节点的最后-一个子节点。
  • insertBefore(Node newNode, Node refNode):在refNode节点之前插入newNode节点。
  • replaceChild(Node newChild, Node oldChild):将oldChild 节点替换成newChild节点。
为列表框、下拉菜单添加选项

为列表框、下拉菜单添加子节点,也就是为列表框、下拉菜单添加选项。添加选项有两种方法:

  • 调用HTMLSelectElement的add0方法添加选项。
  • 直接为e<sele…>的指定 选项赋值。HTMLSelectElement包含如下方法用于添加新选项。
  • add(HTMLOptionElement option, HTMLOptionElement before):在before选项之前添加option选项。如果想将option 选项添加在最后,则将before指定为null即可;或者依然使用之前介绍的appendChild(option)添加亦可。

上面最后一种方法用于在最后添加选项时,将bofore指定为null,但这种方法在早期的浏览器如IE 8 及之前版本的浏览器会出错,因为它不允许add方法的最后一个参数为null,这就需要使用直接为指定选项赋值的方法来添加选项

new Option(text,value,defaultSelected,selected)

该构造器有4个参数

  • text:该选项的文本,即该选项所呈现的内容
  • value:选中该选项的值
  • decaultSelected:设置默认是否选中该选项
  • seleted:设置该选项当前是否被选中

并不是每次构造该选项都需要指定4个参数,也可以只指定一个参数或者两个参数。如果构造Option对象时只指定了一个参数,则该参数是Option的text值;如果指定了两个参数,则第一个参数是text,第二个参数是value。

动态添加表格内容

表格元素、表格行则另有添加子元素的方法。实际上,它们可以在添加子元素的同时创建这些子元素。也就是说,添加表格子元素时,往往无须使用document的createElement()方法来创建节点。
HTMLTableElement对象有如下方法。

  • insertRow(index): 在index处插入一行。 返回新创建的HTMLTableRowElement。
  • createCaption(): 为该表格创建标题。返回新创建的HTMLTableCaptionElement。 如
    果该表格已有标题,则返回已有的标题对象。
  • createTFoot(): 为该表格创建<too…>元素。返回新创建的HTMLTableFootElement。
    如果该表格已(fo…/>元素,则返回已有的o…>元素。
  • createTHead(): 为该表格创建<thead…>元素。返回新创建的HTMLTableHeadElement.
    如果该表格已有<thead…>元素,则返回已有的<thead…/>元素。
    HTMLTableRowElement对象代表表格行,该对象包含如下方法用于插入单元格。
  • insertCell(long index):在index处创建- -个 单元格,返回新创建的单元格。
<body>
    添加<input id = "row" type = "text" size = "2" />行;
    添加<input id = "cel" type = "text" size = "2" />列;
    标题为<input id = "bt" type = "text" size = "2">
    <input id = "chg" type = "button" value = "添加" onclick = "tj();" />
    <div id="test"></div>

<script type = "text/javascript">
    var tj = function(){
     
        document.getElementById("test").innerHTML = ""; //在添加前清除之前的内容
        var a = document.createElement("table");
        var row = document.getElementById("row").value;
        var cel = document.getElementById("cel").value;
        a.style.width = "800px";
        a.style.borderCollapse = "collapse";
        a.border = 1;
        var caption = a.createCaption();
        caption.innerHTML = document.getElementById("bt").value;
        row = parseInt(row);
        cel = parseInt(cel);
        if(isNaN(row)){
     
                alert("您要修改的行必须是整数");
                document.getElementById("row").value = "";
                document.getElementById("cel").value = "";
                return false;
        }
        if(isNaN(cel)){
     
                alert("您要修改的列必须是整数");
                document.getElementById("row").value = "";
                document.getElementById("cel").value = "";
                return false;
            }

        for(var i = 0;i < row;i++){
     
            var tr = a.insertRow(i);
            for(var j = 0;j <cel;j++){
     
                var td = tr.insertCell(j);
                td.style.padding = "5px";
                td.innerHTML = "单元格内容" + i + j;
        }
    }
    document.getElementById("test").appendChild(a);
    }
</script>
</body>

在这里插入图片描述
在这里插入图片描述

删除HTML元素

删除HTML元素也是通过删除节点来完成,对于普通的HTML元素,可通过方法来删除节点,而列表框、下拉菜单、表格则由额外的方法来删除HTML元素。

删除节点

删除节点通常借助其父节点,Node对象提供了如下方法来删除子节点

  • removeChild(oldNode):删除oldNode子节点
删除列表框、下拉彩电的选项
  • 利用HTMLSelectElement对象的remove()方法删除选项
  • 直接将指定选项赋值为null

对于HTMLSelectElement对象而言,它提供了如下方法用于删除选项

  • remove(long index):删除指定索引处的选项
删除表格的行或单元格
  • deleteRow(long idex):删除表格中的index索引处的行
  • deleteCell(long index):删除某行index索引处的单元格
<body>
    <input type="button" id="delrow" value = "删除最后一行" onclick = "delrow();"><br> 
    <input type="button" id="delcell" value = "删除最后一行的最后一格" onclick = "delcell();"><br> 
    删除第<input id = "row" type = "text" size = "2" />行,
    第<input id = "cel" type = "text" size = "2" />列的值;
    <input id = "chg" type = "button" value = "删除" onclick = "ch();" />
    <table id = "test" border = "1" style = "width:500px">
        <tr>
            <td>11</td>
            <td>12</td>
        </tr>
        <tr>
            <td>21</td>
            <td>22</td>
        </tr>
        <tr>
            <td>31</td>
            <td>32</td>
        </tr>
    </table>
<script type = "text/javascript">
    var row = document.getElementById("row");
    var tab = document.getElementById("test");
    var delrow = function(){
     
        if(tab.rows.length>0){
     //如果还有行
            tab.deleteRow(tab.rows.length - 1);
        }
        if(tab.rows.length == 0){
     //若已经没有行删除表格
           document.body.removeChild(tab);
        }
    }
    var delcell = function(){
     
        var rowList = tab.rows;
        var lastRow = rowList.item(rowList.length - 1);

        if(lastRow&&lastRow.cells.length > 0){
     //如果有最后一行
            lastRow.deleteCell(lastRow.cells.length - 1)
        }
        if(lastRow&&lastRow.cells.length == 0){
     //若最后一行已经Wie空,直接删除行
           delrow();
        }
    }
</script>
</body>
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/L1194774003/article/details/104208893

智能推荐

Could not find artifact**.jar in sonatype-nexus-releases,idea无法下载jar包解决方案_could not find artifact in nexus-releases-程序员宅基地

错误信息Failed to execute goal on project XXXX: Could not resolve dependencies for project XXXX:war:1.0-SNAPSHOT: Could not find artifact *******:jar in sonatype-nexus-releases (http://oss.sonatype.org/c..._could not find artifact in nexus-releases

[ZT]Windows server 2003 工具资源命令集_win2003资源监视器 命令行-程序员宅基地

accwiz.exe > Accessibility Wizard for walking you through setting up yourmachine for your mobility needs. 辅助工具向导acsetups.exe > ACS setup DCOM server executableactmovie.exe > Direct Show setup tool 直接显_win2003资源监视器 命令行

github上的开发资源大全中文版_github 中文资源-程序员宅基地

awesome list收集各种awesome。awesome的源头在这里:awesome,后来发展了各种各样的avesome项目。不过资源都是英文的,不太方便国内同学查看,我这里整理了一些中文的avesome项目。参与贡献语言Java资源大全中文版Python 资源大全中文版PHP资源大全中文版PHP资源列表C++ 语言资源大全中文版C 语言资源大全中文版..._github 中文资源

Beanutils.copyProperties( )用法及重写提高效率(参数的顺序)_beanutil.copy 和put-程序员宅基地

最重要的是要注意参数的顺序一、简介: BeanUtils提供对Java反射和自省API的包装。其主要目的是利用反射机制对JavaBean的属性进行处理。我们知道,一个JavaBean通常包含了大量的属性,很多情况下,对JavaBean的处理导致大量get/set代码堆积,增加了代码长度和阅读代码的难度。二、用法: 如果你有两个具有很多相同属性的JavaBean,一个很常见的情..._beanutil.copy 和put

Eclipse/MyEclipse Java注释模板设置详解 -程序员宅基地

设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍:文件(Files)注释标签:/** * @Title: ${file_name} * @Package ${package_name} * @Description:...

Linux MySQL --- SQL语句_linux写sql语句用写分号嘛-程序员宅基地

SQL语句用于维护管理数据库,包括数据库查询、数据更新、访问控制、对象管理等功能SQL语句分类 DDL 数据定义语言,用于创建数据库对象,如库、表、索引等 DML 数据操作语言,用于对表中的数据进行管理 DQL 数据查询语言,用于从数据表中找到符合条件的数据记录 DCL 数据控制语言,用于设置或更改数据库用户或角色权限 进入数据库_linux写sql语句用写分号嘛

随便推点

Android之——流量管理程序演示样例-程序员宅基地

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47680811眼下。市面上有非常多管理手机流量的软件,能够让用户实时获取到自己手机中当前消耗了多少流量,手机中每一个应用程序消耗了多少手机流量,那么这些功能Android中是怎样实现的呢,这篇文章就是要向大家介绍一下,Android系统中流量管理的功能。那么。就让我们一...

IDEA创建Maven —— 阿里云镜像、目录结构不完整、Tomcat启动后404_阿里云镜像 404_老板来碗小面加蛋~的博客-程序员宅基地

文章目录一、Maven安装以及配置环境变量二、IDEA创建Maven项目三、配置Tomcat四、创建好Maven项目出现的问题第一次在IDEA使用Maven时花费了大量时间在搞各种配置和环境,特此记录!!完整的目录结构:一、Maven安装以及配置环境变量官方下载链接:https://archive.apache.org/dist/maven/maven-3/1、建议下载不要选最新的,我第一次使用的时候是Maven 3.6.3+IDEA 2020.3,结果死活用不了,一直卡在阿里云镜像那,后面选_阿里云镜像 404

运行github上Faster-RCNN的笔记_faster rcnn github-程序员宅基地

运行demo.py之前,要运行train.py运行demo:问题:OSError: output\res101\voc_2007_trainval+voc_2012_trainval\default\res101_faster_rcnn_iter_110000.ckpt.meta not found.Did you download the proper networks from our..._faster rcnn github

【数据结构】-排序-基于单链表的简单选择排序_简单选择排序链表实现-程序员宅基地

方法一:不进行任何断链插入操作,找到目标节点之后,只是交换data值,这个思路很简单,与简单选择排序的思路一摸一样。编程注意事项:min不能标记最小值,应该要标记最小值对应的链表节点LinkList createLink(LinkList L) { cout << "尾插法创建单链表:"<<endl; int a; L = (LinkList)malloc(sizeof(LinkNode)); L->next = NULL; LinkNode *p=L,_简单选择排序链表实现

PAT Advanced Level 1072-程序员宅基地

题目地址:http://pat.zju.edu.cn/contests/pat-a-practise/1072代码如下:

iOS 每次运行沙盒路径变化(NSSearchPathForDirectoriesInDomains)-程序员宅基地

最近在编写项目的时候发现,将一个文件路径存储到DB中之后,再此运行的时候,沙盒的路径变了,百度之后发现:iOS8,Xcode6之后,由于安全问题,苹果将沙盒路径改成动态路径,每次运行之后,会将以前的沙盒下的东西COPY备份,然后删除以前的沙盒路径,再新建一个路径,将COPY下来的东西啊,放到新的路径下。这也就导致了我的项目存了路径,也找不到文件的问题。那针对以上问题,有以下解决方法:// ...