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

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

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# 代码中 计算某个函数 或WebService 请求花费时间

    /// 计算请求所花费的时间 System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start( ...

  2. iOS文件系统的管理-b

    NSFileManager 判断一个给定路劲是否为文件夹 [self.fileManagerfileExistsAtPath:isDirectory:]; 用于执行一般的文件系统操作 (reading ...

  3. SpEL快速入门

    Spring表达式语言(简称SpEL)是一种鱼JSP2 EL功能类似的变道时语言,它可以在运行时查询和操作对象图.与JSP 2的EL相比,SpEL功能更加强大,它甚至支持方法的调用和基本字符串模板. ...

  4. solr拼写检查配置

    拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能. 那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是 ...

  5. 转:微博"收藏/赞/转发"技术资料汇总

    书籍 HTTP权威指南 <- @Fenng Introduction to Information Retrieval <- @陈利人 Lua 源码欣赏 <- @简悦云风 The A ...

  6. LINUX BASH SHELL,小小学习一下

    注意点要注意的: 整数运算一般通过 let 和 expr 这两个指令来实现,如对变量 x 加 1 可以写作:let "x = $x + 1" 或者 x=`expr $x + 1` ...

  7. 利用Keil u4调试,精确实现软件延时

    用定时器延时,有时候显得有点麻烦,我们不如考虑软件精确延时,软件延时无非就是利用for或while多重循环.以前用到延时函数时,都是从网上下载别人写好的延时子程序.延时5ms,400ms,1s,……, ...

  8. 利用Tree命令生成磁盘文件列表

    命令原型:D:/>tree /? 以图形显示驱动器或路径的文件夹结构.TREE [drive:][path] [/F] [/A]/F 显示每个文件夹中文件的名称./A 使用 ASCII 字符,而 ...

  9. Word Break II——LeetCode

    Given a string s and a dictionary of words dict, add spaces in s to construct a sentence where each ...

  10. 《SDN核心技术剖析和实战指南》2.4 OVS交换机实现分析小结

    Open vSwitch(OVS)是一款基于软件实现的开源交换机.它能够支持多种标准的管理接口和协议以及跨多个物理服务器的分布式环境.特别地,OVS提供了对OpenFlow协议的支持,并且能够与众多开 ...