全球主机交流论坛

标题: 前端大佬帮忙看一下吧~ [打印本页]

作者: 气味    时间: 2023-12-5 15:01
标题: 前端大佬帮忙看一下吧~
本帖最后由 气味 于 2023-12-5 17:52 编辑


是想用这段js后 直接获取 上面那个id值 然后用那个值自动置换掉下面那个shuchu88



上面那个id值在页面刷新后随机出现

所以希望每刷新一次 就自动获取这个值 并直接把这个值赋到原先为shuchu88这个id
就是把shuchu88直接自动改成获取到的值

不是把获取到的值在shuchu88这个层里面输出

class名称在页面中确定只出现一次






--------------------------注释掉下面------------------------------

怎么通过div的class名获取该div的id值,并在页面中输出这个值。

文言一心的回答



照样子复制下来



为啥MJJ这个层的id名称还是shuch 而不是test-id 呢




--------

找到了

额 原来是不小心把</div>写成了</a>


-----

额 还是不行啊


作者: netviyin    时间: 2023-12-5 15:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: weixiangnan    时间: 2023-12-5 15:07
楼下回答
作者: hongk    时间: 2023-12-5 15:15
提示: 作者被禁止或删除 内容自动屏蔽
作者: acpp    时间: 2023-12-5 15:17
用这个试下。
  1.   const div = elements[i].closest('div');
  2. div.id
复制代码

作者: rosimm    时间: 2023-12-5 15:24
问chatgpt而不是它的孙子
作者: 亮有一妓    时间: 2023-12-5 16:05
< div id="shuchu">< /div>
html元素要放到js的上面才能找到。
另外js可以这样写:
document.getElementById('shuchu').innerHTML = document.querySelector('.test-style').id;
作者: nib    时间: 2023-12-5 16:33
试试
document.addEventListener("DOMContentLoaded", function(event) {
    let divList = document.getElementsByClassName('test-style');
    for(let div of divList){
        console.log(div.id);
    }
});
作者: HOH    时间: 2023-12-5 16:34
都用jquery了还在用这种原始方式,还不如去掉jquery算了
作者: grace    时间: 2023-12-5 16:49
本帖最后由 grace 于 2023-12-5 16:53 编辑

劝你先学学基础,元素都没加载完,肯定是找不到这个节点,要么把script放到body节点的最后,要么用window.onload异步加载
作者: 气味    时间: 2023-12-5 17:14
nib 发表于 2023-12-5 16:33
试试
document.addEventListener("DOMContentLoaded", function(event) {
    let divList = document.getE ...

怎么使用
作者: nib    时间: 2023-12-5 17:23
气味 发表于 2023-12-5 17:14
怎么使用

不知道为啥直接发不出来,放script里就行
(, 下载次数: 0)
作者: 气味    时间: 2023-12-5 17:30
nib 发表于 2023-12-5 17:23
不知道为啥直接发不出来,放script里就行


额 貌似不行

是想用这段js后 直接获取 上面那个id值 然后用那个值自动置换掉下面那个



上面那个id值在页面刷新后随机出现

所以希望没刷新一次 就自动获取这个值 并直接把这个值赋到原先为shuchu88这个id
作者: yrj    时间: 2023-12-5 17:36
这种比较基础的问题,一般问AI就能解决了
作者: Prk    时间: 2023-12-5 17:40
const elements = document.getElementByClassName('class_name') 这个 API 返回的是一个数组

也就是

elements[0]
elements[1]
elements[2]
... ...

你可以 console.log(elements) 看一下这个数组

下标从 0 开始,不过我真的想不到你的使用需求。。。
如果你能确定这个类名就用这一次还好,否则的话你就要写循环遍历内容。

你可以 elements.forEach(e => { xxx });

然后在 xxx 里面拿你的业务逻辑,这里的 e 就是对应的 DOM 元素,你可以做一些判断

当然,最好是告诉业务逻辑,要不然没办法告诉你这里面怎么细写,因为类名是可以复用的,ID 才是唯一的。
作者: nib    时间: 2023-12-5 17:46
气味 发表于 2023-12-5 17:30
额 貌似不行

是想用这段js后 直接获取 上面那个id值 然后用那个值自动置换掉下面那个


这样?
(, 下载次数: 0)

setTimeout(function(){
    let div = document.querySelector('.test-style');
    if(div){
        document.querySelector('#shuchu88').innerText = div.id;
    }
}, 1000)
作者: 气味    时间: 2023-12-5 17:46
Prk 发表于 2023-12-5 17:40
const elements = document.getElementByClassName('class_name') 这个 API 返回的是一个数组

也就是

大佬来了


是想用这段js后 直接获取 上面那个id值 然后用那个值自动置换掉下面那个



上面那个id值在页面刷新后随机出现

所以希望每刷新一次 就自动获取这个值 并直接把这个值赋到原先为shuchu88这个id

class名称在页面中确定只出现一次
作者: 气味    时间: 2023-12-5 17:49
nib 发表于 2023-12-5 17:46
这样?

还是不行
作者: Prk    时间: 2023-12-5 17:58
气味 发表于 2023-12-5 17:46
大佬来了

简单给你写了一下

作者: Prk    时间: 2023-12-5 17:59
Prk 发表于 2023-12-5 17:58
简单给你写了一下

浏览器也能正常处理



值得注意的是,我在 const newId 的那一行使用了 ES6 的模板字符串,请确保使用现代化新浏览器才能正常使用。(支持 ES6 语法的)
作者: Prk    时间: 2023-12-5 18:06
Prk 发表于 2023-12-5 17:59
浏览器也能正常处理

顺便提醒你一下 id 是唯一的 所以前面的 id 务必要先改掉 保证无论什么情况都不要有任何一毫秒存在两个同一个 ID 所以要先改自身
作者: 气味    时间: 2023-12-5 18:25
Prk 发表于 2023-12-5 17:58
简单给你写了一下

额 这是把 i_don-t_know 这个值给改成 ${icurrentId1}2 了啊
作者: 气味    时间: 2023-12-5 18:30
Prk 发表于 2023-12-5 18:06
顺便提醒你一下 id 是唯一的 所以前面的 id 务必要先改掉 保证无论什么情况都不要有任何一毫秒存在两个同 ...

好吧不能同时存在两个相同的ID 那看来是没法实现了

原本的场景是这样的
一个在线客服 对话窗口打开的那个层 id是随机变化 但是这层的class不变

想改成用自己的图片链接 通过这个id值 用display实现在线客服原先点击客服图标打开对话窗口的效果
作者: Prk    时间: 2023-12-5 20:33
气味 发表于 2023-12-5 18:30
好吧不能同时存在两个相同的ID 那看来是没法实现了

原本的场景是这样的

${icurrentId1}2 是模板字符串 最后如果原来 ID 是 abc 那么就变成了 abc2

id 是唯一的 所以必须要改

但是为什么你的业务逻辑不能进行呢?




欢迎光临 全球主机交流论坛 (https://loc.daji.eu.org/) Powered by Discuz! X3.4