这个问题说起来简单,但对于新手来说,也着实卡了好久,并且我在网上搜了好久没能找到合适的答案,

于是去博问问了一下,得到许多大神们的帮助与回答,接下来我就总结一下能够实现这个效果的几种方法,既为了自己更加能够更加深刻的记住也为了万一能够给其他人提供到帮助,哪也不错。

1.要实现的效果:

  要实现效果是:点击右边的最近联系人列表,能够同时获取联系人的名字、银行卡号、银行名称的值,并将其值赋给对应的input文本框。

  

2.问题的分析:

  首先来简单分析一下html代码的结构(css就不多提了)

  • 最近每一个联系人列表的div:

  <div  id="P1"  onclick="list(this.id)">       //点击调用list()函数并把点击的div相应的id值传入

    <img src="..."/>

    <strong>shoulder</strong>                 //联系人名字

    <span>6217000****0000</span>        //银行卡号

    <a>Maybank</a>              //银行名称

  </div>

  • input文本框的代码结构:

  <form>

    <input  type="text"  id="CName"  />

    <input  type="text"  id="BName"/>

    <input  type="text"  id="CNo" />

  </form>

  接着分析实现效果的过程:

    1.点击div

    2.获取对应div的id

    3.根据id找到对应div里的子标签<strong>、<span>、<a>

    4.获取子标签的值

    5.根据id找到对应的input

    6.将标签里的值赋给对应的input

  

3.解决方法汇总:

  解决的方法是有很多的,但因为我想学习一下javascript于是就侧重于Javascript的解决办法,当然jquery也是不错的选择

  方法一:

  <script type="text/javascript">

    var oDiv=document.getElementById("id");

    var mynam=oDiv.firstElementChild.nextElementSibling.innerHTML;

    ducument.getElementById("CName").value=myname;

    var mybank=oDiv.firstElementChild.nextElementSibling.nextElementSibling.innerHTML;

    document.getElementById("BName").value=mybank;

    var mynumber=oDiv.lastElementChild.innerHTML;

    document.getElementById("CNo").value=mynumber;

  </script>

  这种方法就比较繁琐,对于div里有三个以上的子标签时不建议使用,这时候(像本例有四个子标签)可以用到childnodes比较好解决。

这个时候我们得到这种解决方法:

  方法二

  var oDiv=document.getElementById(id);

  myname=oDiv.childNodes[3].innerHTML;

  mybank=oDiv.childNodes[5].innerHTML;

  mynumber=oDiv.childNodes[7].innerHTML;

  document.getElementById("CName").value=myname;

  document.getElementById("BName").value=mybank;

  document.getElementById("CNo").value=mynumber;

  方法二也有缺点的地方,当使用IE浏览器时我们的对应的childNodes为:childNodes[1]、childNodes[2]、childNodes[3];但在其他浏览器上时,浏览器会把元素与元素之间的前后空白符也当作一个子标签,因此当我们获取第二个标签<strong>时为childNodes[3],以此类推。

  这样看的话childNodes也不是很好用,还有没有别的类似的办法呢? 其实有一个children属性是可以解决浏览器针对这点的差别的,这时候若要获取第一个标签则是children[0]、第二个为children[1]这种正常顺序就可以了。

  方法三:

  这是我觉得对我来说最理想的方法,因为用这种方法可以不需要去定义列表联系人的每一个div的id值,很适合我这种现在暂时还不懂怎么动态为元素赋id值或者循环之类巴拉巴拉的(当然以后会学补回来!)。 

   <div  onclick="list(this)" >联系人的Div</div>

  function list(dom){

  var name = dom.getElementsByTagName("strong")[0].innerHTML;
  document.getElementById("CName").value=name;

  var num = dom.getElementsByTagName("span")[0].innerHTML;
  document.getElementById("CNo").value=num;

  var bank = dom.getElementsByTagName("a")[0].innerHTML;
  document.getElementById("BName").value=bank;

  }

 

总结:如何获取同一个DIV里的多个不同子标签的值,并赋值给input?的更多相关文章

  1. (六)Net Core项目使用Controller之一 c# log4net 不输出日志 .NET Standard库引用导致的FileNotFoundException探究 获取json串里的某个属性值 common.js 如何调用common.js js 筛选数据 Join 具体用法

    (六)Net Core项目使用Controller之一 一.简介 1.当前最流行的开发模式是前后端分离,Controller作为后端的核心输出,是开发人员使用最多的技术点. 2.个人所在的团队已经选择 ...

  2. Spring是如何保证同一事务获取同一个Connection的?使用Spring的事务同步机制解决:数据库刚插入的记录却查询不到的问题(转)

    前言 关于Spring的事务,它是Spring Framework中极其重要的一块.前面用了大量的篇幅从应用层面.原理层面进行了比较全方位的一个讲解.但是因为它过于重要,所以本文继续做补充内容:Spr ...

  3. jQuery加载一个html页面到指定的div里

    一.jQuery加载一个html页面到指定的div里 把a.html里面的某一部份的内容加载到b.html的一个div里.比如:加载a.html里面的<div id=“row"> ...

  4. js获取单选框里面的值

    rt,如果想获取单选框里面的值,该如何获取呢. <script> window.onload = function(){ //通过名字获取 getElementsByName //var ...

  5. div里嵌套了img底部会有白块问题和图片一像素问题解决

    div里嵌套了img底部会有白块 因为img默认是按基线(baseline)对齐的.对比一下图片和右边的p, q, y等字母,你会发现这三个字母的“小尾巴”和图片下方的空白一样高.下面这张图中的黑线就 ...

  6. css参考文档; 官方英文说明!! 1 margin padding 百分比参照物 2 margin值为auto时的说明 3 div在div里垂直居中方法 4 dispaly:flex说明

    css参考文档        http://css.doyoe.com/ 两篇很好的文章:(下面的css官方英文说明链接 有时间可以研究下 http://www.w3.org/TR/css3-box/ ...

  7. 解决div里插入img下边缝隙问题

    <html>   <head>   <title> new document </title>   <meta name="author ...

  8. JS获取ckeditor4.x里的值

    项目中有这样一个需求,使用ckeditor可以上传图片,需要在前端验证一下不可上传多于5张图片. 以下是查看源代码所看到的ckeditor里的值 <p>AAAAA</p> &l ...

  9. 实现图标Icon+文字在div里自动中心居中(水平垂直居中)

    已知div行高设置text-align:center文字会自动居中. 通过:before来设置icon的地址和高宽. 需要设置图片默认的垂直居中条件,与文字一致,为text-bottom. 设置图片行 ...

随机推荐

  1. 粗看C#委托

    C#的好多定义跟C艹不太相同,先来分析一下“委托”. 1. 委托的定义: 委托,可以认为是类型安全的函数指针,类型安全就是指明确定义了返回类型与参数类型,在C#代码编译时就能够确保指针传参时的安全性. ...

  2. 一分钟让你明白CSS中的盒模型

    想必初学者对CSS盒模型总是很困惑吧.下面一分钟让你彻底明白盒模型: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" &q ...

  3. h.264 率失真优化

    Rate Distortion Optimization 搜索时,一个不可避免的问题就是如何对mv进行比较,从而得到最优 对于同一压缩算法来说,码率越高表示图像质量越好.失真越小,但是码率越高要求更大 ...

  4. GFF 和 OGS 这两种触摸屏谁更好?

    我将从成本分析.制程分析.用户体验三个方面来回答楼主的问题.GFF的触摸屏从字面上翻译过来,就是一层玻璃cover,两层film构成的触摸屏.其中,玻璃cover作为整个手机的coverlens,从外 ...

  5. Shared and Exclusive Locks 共享和排它锁

    14.5 InnoDB Locking and Transaction Model InnoDB 锁和事务模型 14.5.1 InnoDB Locking 14.5.2 InnoDB Transact ...

  6. treap修订

    #include<cstdio> #include<cmath> #include<algorithm> #include<ctime> #includ ...

  7. yui--datatable 更新table数据

    使用render可以重新渲染datatable,之前添加的样式等信息也想相应会初始化,另外行定位等也会失效 使用updateRows方法不会删除样式等信息 更新datasource中_oData数据 ...

  8. HTML父子页面通信问题(showModalDialog)

    1. showModalDialog参数说明 window.showModalDialog(URL, ARGS,Features)(在父窗口中调用打开新的窗口) URL          --  必选 ...

  9. Tomcat内存溢出详解【转载】

    本文转载自 http://elf8848.iteye.com/blog/378805 Java内存溢出详解 一.常见的Java内存溢出有以下三种: 1. java.lang.OutOfMemoryEr ...

  10. 迁移ADT/ANT构建的Android项目至Gradle,a walk through。

    LibModule 配置更新 9 months ago   app 配置更新 9 months ago   gradle/wrapper 配置更新 9 months ago   screenshots ...