列表页点击商品跳转到对应商品的详情页

第一步:

新建dome1.html列表页
通过jq的each遍历, res.books 是要遍历的数据,
each处理json数据,这个each就有更厉害了,能循环每一个属性
  var obj = { one:1, two:2, three:3};   each(obj, function(key, val) {   alert(key);   alert(val);   });
这里alert(key)将输出one two three
alert(val)将输出one,1,two,2,three,3

跳转通过拼接a标签的href bookId通过具体页面来写,给bookId赋值,就是json数据里面的商品id值,之后再到商品详情页接收id
"<a href='dome2.html?booksId="+val.id+"'>

<div class="warp">
</div>



<script src="node_modules/jquery/dist/jquery.min.js" type="text/javascript"></script>
<script>
$(function () {
$.ajax({
type:"get",
url:"dome1.json",
dataType:"json",
success:function (res) {
console.log(res.books);
var str = "";
$.each(res.books, function(idx,val) {
str += "<div class=\"content\">" +
"<a href='dome2.html?booksId="+val.id+"'><img src='"+val.imgUrl+"'/></a>" +
"<p class=\"p\">"+val.price+"</p>" +
"</div>"
});
$('.warp').append(str);
}
})
})
</script>

第二步:

新建dome2.html详情页
接收传过来的url参数拿到列表页中a标签里面写的bookId
//获取url中的参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
//接收URL中的参数booksId
var id = getUrlParam('booksId');
console.log('id:'+id);

然后在遍历中进行判断,id是否等于val.id
if(id == val.id){

}
<div class="aticle">
</div>

<script src="node_modules/jquery/dist/jquery.min.js" type="text/javascript"></script>
<script>
$(function () {

//获取url中的参数
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
//接收URL中的参数booksId
var id = getUrlParam('booksId');
console.log('id:'+id);

$.ajax({
type:"get",
url:"dome1.json",
dataType:"json",
success:function (res) {
console.log(res);
$.each(res.books,function (idx,val) {
if(id == val.id){
var innT ="<div class=\"aticle_content\">\n" +
"<div class=\"img\"><img src='"+val.imgUrl+"'/></div>\n" +
"<p class=\"title\">"+val.title+"</p>\n" +
"<p class=\"publish\">"+val.publish+"</p>\n" +
"<p class=\"num\">"+val.num+"</p>\n" +
"<p class=\"price\">"+val.price+"</p>\n" +
"<p class=\"publish\">"+val.publish+"</p>\n" +
"<p class=\"desc\">"+val.desc+"</p>\n" +
"</div>"
}
$(".aticle").append(innT);
})
}
})
})
</script>



实现点击商品跳转详情页的功能,你可以使用React Router库来管理路由。首先,你需要在你的应用程序中安装React Router,然后在你的代码中导入它。 然后,你可以创建一个商品列表组件,这个组件会显示所有的商品。在这个组件中,你可以使用React Router的Link组件创建每个商品的链接,这个链接会在被点击跳转对应商品详情页。例如: ```jsx import { Link } from "react-router-dom"; function ProductList({ products }) { return ( <div> {products.map(product => ( <div key={product.id}> <h2>{product.name}</h2> <p>{product.description}</p> <Link to={`/products/${product.id}`}>View details</Link> </div> ))} </div> ); } ``` 这个Link组件会渲染成一个a标签,当它被点击时,React Router会在应用程序的URL中添加商品ID,例如"/products/123",并加载相应的商品详情组件。 接下来,你需要在你的应用程序中定义路由规则,以告诉React Router应该在哪些URL上加载哪些组件。这可以在应用程序的根组件中完成,例如: ```jsx import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; function App() { return ( <Router> <Switch> <Route path="/products/:productId"> <ProductDetails /> </Route> <Route path="/"> <ProductList products={...} /> </Route> </Switch> </Router> ); } ``` 这个例子中,我们定义了两个路由规则,一个是匹配"/products/:productId"的,另一个是匹配根路径"/"的。当URL匹配到这些规则时,React Router会加载相应的组件。 希望这可以回答你的问题!
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值