javascript(三)

      创建节点:
createElement(标签名) :创建一个指定名称的元素。
例:var  tag=document.createElement(“input")
            tag.setAttribute('type','text');


添加节点:
追加一个子节点(作为最后的子节点)
somenode.appendChild(newnode)
 
把增加的节点放到某个节点的前边

somenode.insertBefore(newnode,某个节点);


删除节点:

removeChild():获得要删除的元素,通过父元素调用删除


替换节点:

somenode.replaceChild(newnode, 某个节点);


 移动节点:

目标位置父节点.appendChild(被移动节点) 方法从一个元素向另一个元素中移动元素。

===================================================

节点属性操作:


1、修改文本节点的值:innerText    innerHTML
       修改innerHTML属性,这个方式非常强大,不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树:
// 获取<p id="p-id">...</p>
var p = document.getElementById('p-id');
// 设置文本为abc:
p.innerHTML = 'ABC'; // <p id="p-id">ABC</p>
// 设置HTML:
p.innerHTML = 'ABC <span style="color:red">RED</span> XYZ';
// <p>...</p>的内部结构已修改
用innerHTML时要注意,是否需要写入HTML。如果写入的字符串是通过网络拿到了,要注意对字符编码来避免XSS攻击。


       修改innerText或textContent属性,这样可以自动对字符串进行HTML编码,保证无法设置任何HTML标签:

// 获取<p id="p-id">...</p>
var p = document.getElementById('p-id');
// 设置文本:
p.innerText = '<script>alert("Hi")</script>';
// HTML被自动编码,无法设置一个<script>节点:
// <p id="p-id"><script>alert("Hi")</script></p>
两者的区别在于读取属性时,innerText不返回隐藏元素的文本,而textContent返回所有文本。另外注意IE<9不支持textContent。

2、attribute操作


     elementNode.setAttribute(name,value)    


     elementNode.getAttribute(属性名)        <-------------->elementNode.属性名(DHTML)


     elementNode.removeAttribute(“属性名”);


3、value获取当前选中的value值
        1.input   
        2.select (selectedIndex)

        3.textarea  


4、innerHTML 给节点添加html代码:
        该方法不是w3c的标准,但是主流浏览器支持    
        tag.innerHTML = “<p>要显示内容</p>”;


5、关于class的操作:
elementNode.className
elementNode.classList.add

elementNode.classList.remove


 6、改变css样式:

<p id="p2">Hello world!</p>
document.getElementById("p2").style.color="blue";

         .style.fontSize=48px

===================================================

DOM Event(事件)
事件类型

onclick        当用户点击某个对象时调用的事件句柄。
ondblclick     当用户双击某个对象时调用的事件句柄。

onfocus        元素获得焦点。               练习:输入框
onblur         元素失去焦点。               应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证.
onchange       域的内容被改变。             应用场景:通常用于表单元素,当元素内容被改变时触发.(三级联动)

onkeydown      某个键盘按键被按下。          应用场景: 当用户在最后一个输入框按下回车按键时,表单提交.
onkeypress     某个键盘按键被按下并松开。
onkeyup        某个键盘按键被松开。

onload         一张页面或一幅图像完成加载。

onmousedown    鼠标按钮被按下。
onmousemove    鼠标被移动。
onmouseout     鼠标从某元素移开。
onmouseover    鼠标移到某元素之上。
onmouseleave   鼠标从元素离开

onselect       文本被选中。
onsubmit       确认按钮被点击。
-----------------------------------------------------------------------------------------
绑定事件方式:一
<div id="div" οnclick="foo(this)">点我呀</div>

<script>
    function foo(self){           // 形参不能是this;
        console.log("点你大爷!");
        console.log(self);   
    }
</script>
<p id="abc">试一试!</p>

<script>

    var ele=document.getElementById("abc");

    ele.οnclick=function(){
        console.log("ok");
        console.log(this);    // this直接用
    };

</script>

----------------------------------------------------------------------------------------

Event对象


bubbles 返回布尔值,指示事件是否是起泡事件类型。
cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。
currentTarget 返回其事件监听器触发该事件的元素。
eventPhase 返回事件传播的当前阶段。
target 返回触发此事件的元素(事件的目标节点)。
timeStamp 返回事件生成的日期和时间。
type 返回当前 Event 对象表示的事件的名称。




--------------------------------------------------------------------------------------------

练习:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .c1{
            width: 20%;
            float: left;
        }
        .c3{
            background-color: #2459a2;
            text-align: center;
        }

        .c2{
            width: 80%;
            float: left;
        }
        .c4{
            width: 280px;
            height: 300px;
            position: fixed;
            top:50%;
            left: 50%;
            margin-top: -150px;
            margin-left: -115px;

            background-color: #8aab30;
            text-align: right;
            padding-right: 30px;

        }
        .hide{

            display: none;
        }
    </style>
</head>
<body>
<div class="c1">
    <div class="c3">操作</div>
    <div><button class="add">新增</button></div>
</div>
<div class="c2">
      <table border="1" class="tab">
          <tr>
              <td>编号</td>
              <td>书名</td>
              <td>作者</td>
              <td>价格</td>
              <td>分类</td>
              <td>上架时间</td>
              <td>操作</td>
          </tr>
          <tr>
              <td>3122</td>
              <td>《端午节》</td>
              <td>egon</td>
              <td>2</td>
              <td>A</td>
              <td>2010</td>
              <td><button class="del">删除</button></td>
          </tr>
          <tr>
              <td>3142</td>
              <td>《若干规定》</td>
              <td>Alex</td>
              <td>3</td>
              <td>B</td>
              <td>2015</td>
              <td><button class="del">删除</button></td>
          </tr>
          <tr>
              <td>3422</td>
              <td>《哭一哭》</td>
              <td>yuan</td>
              <td>2</td>
              <td>A</td>
              <td>2010</td>
              <td><button class="del">删除</button></td>
          </tr>
      </table>
    <div class="c4 hide">
        <form action="#">
            <p>编号:<input type="text" class="text_data"></p>
            <p>书名:<input type="text" class="text_data"></p>
            <p>作者:<input type="text" class="text_data"></p>
            <p>价格:<input type="text" class="text_data"></p>
            <p>分类:<input type="text" class="text_data"></p>
            <p>上架时间:<input type="text" class="text_data"></p>
            <p><button>保存</button> </p>
        </form>
    </div>
</div>
<script>
    var ele_btn=document.getElementsByTagName('button');

    for (var i=0;i<ele_btn.length;i++){
        ele_btn[i].οnclick=function () {

            if (this.className == 'add'){
                var ele_tab=document.getElementsByClassName('tab')[0];
                var ele_form=ele_tab.nextElementSibling;
                ele_form.classList.remove('hide')
                var New_tr=document.createElement('tr');

                ele_tab.appendChild(New_tr);


            }
            else if (this.className == 'del'){
                var ele_del=this.parentElement.parentElement.parentElement;
                var ele_f=this.parentElement.parentElement
                ele_del.removeChild(ele_f)
            }
            else {
                var ele_tab=document.getElementsByClassName('tab')[0];
                var ele_last=ele_tab.lastElementChild;


                var ele_input=document.getElementsByClassName('text_data');

                for (var i=0;i<ele_input.length;i++){
                    var ele_value=ele_input[i].value;
//                    alert(ele_value)
                    var new_td=document.createElement('td')
                    ele_last.appendChild(new_td)
                    var ele_1=ele_last.lastElementChild
                  ele_1.innerText=ele_value
                }
                var new_td=document.createElement('td')
                ele_last.appendChild(new_td)
                var ele_1=ele_last.lastElementChild
                        ele_1.innerHTML='<button οnclick="ss(this)">删除</button>'
                var ele_form=ele_tab.nextElementSibling;
                ele_form.classList.add('hide')
            }
        }
    }
function ss(self) {
    var ele_del=self.parentElement.parentElement.parentElement;
                var ele_f=self.parentElement.parentElement
                ele_del.removeChild(ele_f)
}



</script>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值