zoukankan      html  css  js  c++  java
  • selectDOM操作详解-select option详细解释

    首先从一个面试题来讲,我最近在做前端面试题,题目如下:

    完成函数showlmg(),要求能够动态根据下拉列表的选项变化,更新图片的显示
    <body>
    <script type="text/javascript">
    function showImg (oSel) {


    };
    </script>
    <img id="pic" src="img1.jpg" width="200" height="200">
    <br/>
    <select id="sel" onchange="showImg(this)">
    <option value="img1">城市生活</option>
    <option value="img2">都市早报</option>
    <option value="img3">青山绿水</option>
    </select>
    </body>

    我就顺便找了下有关select的DOM操作方法,发现有的是错的,所以还是得自己动手操作啊

    首先基础:

    //增加一个新的option:

    </script>
    <select id="add" style="100px;height:30px;font-size: 24px;">
    <option value="qi">qi</option>
    <option value="test1" selected="true">test</option>
    </select>
    addValue:<input type="text" id="addValue"/>&nbsp;&nbsp;addText:<input type="text" id="addText"/>
    <button id="addOption">addOption</button>
    <button id="delOption">delOption</button>
    <script>
    var add=document.querySelector('#add');
    var addOption=document.querySelector('#addOption');
    var delOption=document.querySelector('#delOption');
    var addValue=document.querySelector('#addValue');
    var addText=document.querySelector('#addText');
    //获取select#add下的所有option
    var allOptions=add.getElementsByTagName('option');
    console.log(add.value);//当前选中的option的value值
    console.log(add.selectedIndex);//当前选中的option的index索引
    console.log(add.options[add.selectedIndex].innerHTML);
    console.log(add.options[add.selectedIndex].text);//当前选中的option的text值

    addOption.onclick=function(){
    //创建一个新的option并赋值
    var flag=true;
    //这里对addText还可以进行更详细的内容控制,可以用正则进行处理
    if(addText.value==''){
    addText.setAttribute("placeholder","addText不能为空");
    }else{
    //将新创建的option添加进select列表
    for(var i=0;i<allOptions.length;i++){
    if(allOptions[i].text==addText.value){
    flag=false;
    break;
    }else{
    flag=true;
    }
    }
    if(flag==true){
    var newOption=new Option(addText.value,addValue.value);
    add.options.add(newOption);
    console.log('添加成功');
    }else{
    console.log("addText不能重复");
    }
    }

    }

    delOption.onclick=function(){
    for(var i=0;i<allOptions.length;i++){
    if(allOptions[i].selected==true){//如果当前元素被选中
    add.options.remove(allOptions[i]);
    }
    }
    }

    </script>

    //下面回到最初的面试题,相信你也可以想到不同的几个思路吧,那么我尝试几个思路吧

    <img id="pic" src="img1.jpg" width="200" height="200" alt="img1.jpg"/>
    <br/>
    <select id="sel" onchange="showImg(this);">
    <option value="img1">城市生活</option>
    <option value="img2">都市早报</option>
    <option value="img3">青山绿水</option>
    </select>
    <script>
    var pic=document.querySelector('#pic');
    var sel=document.querySelector('#sel');
    function showImg (oSel) {
    pic.src=oSel.options[oSel.selectedIndex].value+'.jpg';
    pic.alt=oSel.options[oSel.selectedIndex].value+'.jpg';
    };
    </script>

  • 相关阅读:
    在路上。。。
    DNN模块打包(DNN-ModulePack简称为DNNMP)
    创建一个PortalSettings,这也行。
    对Web 2.0 的体验
    太空旅客 第七位 了
    计划今年每月至少写一篇技术性文章
    检索 COM 类工厂中 CLSID 为 {0002450000000000C000000000000046} 的组件时失败,原因是出现 以下错误: 80070005
    RadGrid RaisePostBackEvent 刷新页面问题。
    做为团队中的一员
    dnn captcha 图片 显示不了 见鬼了
  • 原文地址:https://www.cnblogs.com/qiqi105/p/8399929.html
Copyright © 2011-2022 走看看