te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Typescript children on Nodes - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Typescript children on Nodes - Stack Overflow

programmeradmin3浏览0评论

In Javascript this Code works like a acharm, in Typescript I get the following Error:

Property 'children' does not exist on type 'Node'.

This is my code

    var parser = new DOMParser();
    var res = parser.parseFromString(xmldata, "text/xml")
    var branches = res.getElementsByTagName("Branch")
    branches[i].childNodes[7].children

In Javascript this Code works like a acharm, in Typescript I get the following Error:

Property 'children' does not exist on type 'Node'.

This is my code

    var parser = new DOMParser();
    var res = parser.parseFromString(xmldata, "text/xml")
    var branches = res.getElementsByTagName("Branch")
    branches[i].childNodes[7].children
Share Improve this question edited Jul 31, 2017 at 11:47 ADreNaLiNe-DJ 4,9193 gold badges27 silver badges35 bronze badges asked Jul 31, 2017 at 11:41 FloFlo 3,0674 gold badges26 silver badges52 bronze badges 1
  • instead of childNodes you could try children which should return instances of Element instead of Node – the8472 Commented Jul 31, 2017 at 12:09
Add a ment  | 

2 Answers 2

Reset to default 8

The error occurs because there is no field children in the definition file for the Node interface. The typescript piler will prompt an error if the property you're trying to access on an object does not exist. You can see the entire definition file here.

What happens is that the selected child node is an instanceof Element. The childNodes method returns an implementation of the interface NodeList which is an iterator for objects of the type Node. When you look at the definition for the Element interface, you can see that it inherits Node, ChildNode and ParentNode interfaces. The ParentNode interface is the one that contains the readonly attribute children. You can apply casts to objects in Typescript to the proper element type.

let el = <Element> branches[i].childNodes[7];
el.children;
// or without declaring a new variable
(<Element> branches[0].childNodes[0]).children;

This should work with typescript

const parentEl = document.getElementById('parentId')
if (!parentEl) {
  return
}

const childElements = Object.values(parentEl.childNodes) as HTMLElement[]
for (const childEl of childElements) {
  console.log(childEl.offsetLeft)
}
发布评论

评论列表(0)

  1. 暂无评论