小编use*_*843的帖子

普通的Javascript:event.target:获取下一个同级项和第一个Child

我有一个HTML表,并为每一行设置了事件侦听器:

var greyHeadings = document.querySelectorAll(".grey");

console.log(greyHeadings);

greyHeadings.forEach(function(greyHeading){
  greyHeading.addEventListener('click', function(e){
    displayDescription(e, greyHeading);
  });
});
Run Code Online (Sandbox Code Playgroud)

称为(displayDescription)的函数如下:

function displayDescription(e, greyHeading){
  var desc = e.target.parentNode.nextSibling.firstChild;
  console.log(desc);
}
Run Code Online (Sandbox Code Playgroud)

它确实为我提供了正确的目标,但似乎nextSibiling.firstChild不起作用。我需要到达下一行(因此,同级),并找到第一个td(因此,第一个Child),以便我可以向其中添加一个active类,以防万一。

我还创建了一个jsfiddle:https ://jsfiddle.net/7vpzLfke/

我是一个初学者,因此非常感谢您提供更详细的解释!

html javascript css

7
推荐指数
1
解决办法
6759
查看次数

React 中的函数:由于“只读”错误,我的函数不起作用。为什么?

我正在尝试将一个函数写入 React 组件,但我遇到了这个错误:

未捕获的错误:模块构建失败:语法错误:“productMap”是只读的

为什么会这样?我该如何解决这个问题,以便我可以使用productMap

这是我的功能:

printReceipt() {
    var products = this.props.updateBasket.products;

    //create a map of products

    const productMap = {};
    for(let product of products) {
        if(!productMap[product.id]) {
            productMap[product.id] = 1;
        } else {
            productMap = productMap + 1; 
        }
    }
    console.log(productMap);
}
Run Code Online (Sandbox Code Playgroud)

loops for-loop function reactjs

5
推荐指数
1
解决办法
9055
查看次数

在这个对象解构中,“...rest”代表什么?

我正在阅读有关 React 中的unknown-prop警告,特别是因为我正在使用react-bootstrap包并在那里偶然发现了它们。

我读过:“为了解决这个问题,复合组件应该“消耗”任何用于复合组件而不是用于子组件的道具”,在这里:

https://gist.github.com/jimfb/d99e0678e9da715ccf6454961ef04d1b

并给出了一个示例,说明如何使用展开运算符将变量从 props 中取出,并将剩余的 props 放入变量中。

示例代码:

function MyDiv(props) {
  const { layout, ...rest } = props
  if (layout === 'horizontal') {
    return <div {...rest} style={getHorizontalStyle()} />
  } else {
    return <div {...rest} style={getVerticalStyle()} />
  }
}
Run Code Online (Sandbox Code Playgroud)

问题在于:在给出的示例中,我不明白此代码中的“...rest”代表什么。我知道“...”=展开语法,但是“rest”这个词从哪里来,它代表什么?

javascript reactjs react-bootstrap spread-syntax

1
推荐指数
1
解决办法
483
查看次数

react-router v4.2.2 开关不工作;始终显示主要组件

我正在使用 react-router 将主页上的一组卡片定向到其他单个页面。但是,当我点击卡片时,新页面会在卡片组下方呈现,而我想要的只是呈现新页面。我认为问题可能与我的 App.js 在其中包含主页有关,但我不知道我应该把它放在哪里,是否应该有一个单独的链接等等?我将不胜感激任何帮助!谢谢

这是 App.js 的代码

import React from 'react';
import Routes from '../containers/routes.js';
import ProjectCards from '../containers/project_cards.js';

export default class App extends React.Component {
    render() {
        return(
            <div>
                <ProjectCards />
                <Routes />
            </div>
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

这是主容器:

import React from 'react';
import { connect } from 'react-redux';
import { Link } from 'react-router-dom';
import ProjectCard from '../components/project_card.js';
import Project1 from '../components/project1.js';

class ProjectCards extends React.Component {
    render() {
        var projectCards = this.props.projects.map((project, i) => {
            return ( …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-component react-router-v4 react-router-dom

1
推荐指数
1
解决办法
3736
查看次数

事件侦听器无法使用预定义函数作为参数

我是初学者,我刚刚尝试这样做:

ul.addEventListener("click", function(e) {
  console.log("Hi");
});
Run Code Online (Sandbox Code Playgroud)

这有效。据我所知,这是一个匿名函数。然而,当我尝试事先给出这个函数的定义并像这样传递它时,它不会工作:

function myFunc(e) {
  console.log("Hi from myFunc");
}

ul.addEventListener("click", myFunc(e));
Run Code Online (Sandbox Code Playgroud)

我不明白有什么区别。错误如下:

未捕获的引用错误:e 未
在 javascript.js:29 处定义

javascript addeventlistener dom-events

0
推荐指数
1
解决办法
436
查看次数