为了账号安全,请及时绑定邮箱和手机立即绑定

如果我向 var 添加“+”,为什么 JavaScript 会将 var 读取为字符串?

如果我向 var 添加“+”,为什么 JavaScript 会将 var 读取为字符串?

UYOU 2023-09-14 20:41:16
我的 firestore 文档中的字段名称为videolink1-“一些视频链接”videolink2-“一些视频链接”videolink3-“一些视频链接”我正在使用 for 循环来获取文档中存在的所有视频链接。                if (doc.exists) {                                     for (var i = 1; i == videocount; i++) { //videocount is 3                    var data = doc.data();                    var videolink = data.videolink+i;  //creating new paragraph                    var p = '<p class ="trackvideostyle">'+"Your Video Link : "+String(videolink)+'</p>\';                    document.getElementById("btn").insertAdjacentHTML('beforebegin', p);                    }但是这个 for 循环正在创建 var 值,这些值被读取为字符串,并且 firestore 返回 NaN 因为我没有这些字段:data.videolink+1data.videolink+2   //Firestore is returning null as i dont have these document fieldsdata.videolink+3我如何编写 for 循环,以便像这样创建 var 值,并且 firestore 将其读取为:videolink1videolink2videolink3
查看完整描述

4 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

我想你可以尝试这样的事情

var videolink = data[`videolink${i}`];

请参阅:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals


查看完整回答
反对 回复 2023-09-14
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

为什么它不起作用

点运算符(属性访问器)具有更高的 precendense,因此首先对其求值,因此您可以获得属性的值,然后连接变量的值i

你该怎么办

您可以使用另一个属性访问器 - 方括号,就像在数组中一样:

data['videolink']

您可以在方括号内构建属性名称:

data['videolink' + i]

或使用模板文字:

data[`videolink${i}`]


查看完整回答
反对 回复 2023-09-14
?
DIEA

TA贡献1820条经验 获得超2个赞

您正在使用“data.videolink+i”并且JavaScript不会评估“.”之后的值 相反,它被视为对象的属性。您需要使用[]进行评估。试试这个我希望这会起作用


        if (doc.exists) {

                        

            for (var i = 1; i == videocount; i++) {


            var data = doc.data();

            var videolink = data[videolink+i];


        //creating new paragraph

            var p = '<p class ="trackvideostyle">'+"Your Video Link : 

        "+String(videolink)+'</p>\';


            document.getElementById("btn").insertAdjacentHTML('beforebegin', 

         p);


            }


查看完整回答
反对 回复 2023-09-14
?
慕标5832272

TA贡献1966条经验 获得超4个赞

您可以通过使用来做到这一点


1. 模板字符串

..

var videolink = `${data.videolink}${i}`

..

2. 连接()

.. 

var videolink = data.videolink.concat(i.toString());

..


查看完整回答
反对 回复 2023-09-14
  • 4 回答
  • 0 关注
  • 120 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信