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

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

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. GitHub 入门

    1. CentOS 安装 Github. # sudo yum install skynet 安装之后查看一下版本. # git --version 2. 注册 Github 账号,登录后阅读 Git ...

  2. 网站优化指南之数据库缓存、CDN与云存储

    1 数据库缓存. 常见的做法是用内存做cache,把数据库里的内容提前取出读到内存里,用户再请求时,就不直接读数据库,而是读内存里的数据,从而缓解了数据库的压力. 过去比较常用的缓存软件是memcac ...

  3. Mysql 主从复制,读写分离设置

    一个简单完整的 Mysql 主从复制,读写分离的示意图. 1. 首先搭建 Mysql 主从架构,实现 将 mater 数据自动复制到 slave MySQL 复制的工作方式很简单,一台服务器作为主机, ...

  4. 玩转12款Linux开源机器人

    玩转12款Linux开源机器人 头条网2016-02-15 09:04 3DR Solo智能无人机发布于2015年中期.作为试图与大疆广受欢迎的Phantom系列无人机相抗衡的产品,它的双处理器运行L ...

  5. (2015年郑州轻工业学院ACM校赛题) E 汇编原理

    此题属于比较麻烦的模拟题,比赛的时候是队友写的, 比赛结束之后自己也写了一遍,感觉对复杂模拟的掌控还是不行! 解析: 我感觉 ADD操作 和 MOV操作比较类似 所以就写在了一块,MUL操作单独写就行 ...

  6. 甲骨文公司 Oracle

    甲骨文公司 甲骨文公司,全称甲骨文股份有限公司,是全球最大的企业软件公司,总部位于美国加利福尼亚州的红木滩.甲骨文是继Microsoft之后,全球收入第二多的软件公司.甲骨文公司1989年正式进入中国 ...

  7. [Java] TreeMap - 源代码学习笔记

    TreeMap 实现了 SortedMap 和 NavigableMap 接口,所有本文还会记录 SortedMap 和 NavigableMap 的阅读笔记. SortedMap 1. 排序的比较应 ...

  8. python:redis简单操作

    一,安装redis-py pip install redis easy_install redis 二,简单用法 import redis # 连接redis服务器 def conn_redis(): ...

  9. iOS内存管理(一)

    最近有时间,正好把iOS相关的基础知识好好的梳理了一下,记录一下内存相关方面的知识. 在理解内存管理之前我觉得先对堆区和栈区有一定的了解是非常有必要的. 栈区:就是由编译器自动管理内存分配,释放过程的 ...

  10. 2015 GOOGLE I/O大会看点总结:新的开发工具及云端测试工具

        http://ask.android-studio.org/?/article/48 尽管凌晨开始的主题演讲略显晦涩并继承了谷歌一贯的东一句西一句想起啥说啥的混乱风格,但期待用技术改变世界的技 ...