对将 JS 变量插入 Jquery 感到困惑

Posted

技术标签:

【中文标题】对将 JS 变量插入 Jquery 感到困惑【英文标题】:Confused about inserting a JS variable into Jquery 【发布时间】:2022-01-20 19:45:01 【问题描述】:

我想滚动到我的 html 表格中的某一行,其中包含格式为

的日期
Nov-17-2021

目前,我有这个 date.js 函数,它获取今天的日期并将其输入到 <span>

const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
];

const d = new Date();

var today = new Date();

var date = today.getDate() + '-' + monthNames[d.getMonth()] + '-' + today.getFullYear();

document.getElementById("date").innerHTML = date;

我发现我可以使用 JQuery 轻松滚动到页面中的某些文本

function anotherFunction() 
    $(window).scrollTop($("table:contains('some text'):last").offset().top);

如何使用 javascript 代码中的变量 date 使用 JQuery 滚动到表格中的此文本?本质上,我想要一个在我的表格中跳转到今天日期的按钮。

我很确定也有更好的方法可以做到这一点,但我是编程的绝对初学者,我知道的不多,所以很抱歉直言不讳,谢谢!

【问题讨论】:

您的日期格式与Nov-17-202117-Nov-2021 提供的文本不匹配,因此除非您进行日期解析,否则它们将不匹配。 【参考方案1】:

您是否尝试过在字符串中包含日期?

function anotherFunction() 
    date = document.getElementById("date").innerHTML
    $(window).scrollTop($(`table:contains($date):last`).offset().top);

【讨论】:

【参考方案2】:

您可以使用字符串连接或字符串文字添加日期字符串。

"table:contains(" + date +"):last"
`table:contains($date):last`

例子:

// Fix a date for demo
var date = "18-Dec-2021"

$("button").click(() => 
  $(window).scrollTop($("tr:contains('" + date + "'):last").offset().top);
);
td  height: 200px; border: 1px solid #CCC; 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button>click me</button>
<table>
  <tbody>
    <tr><td>01-Dec-2021</td></tr>
    <tr><td>10-Dec-2021</td></tr>
    <tr><td>18-Dec-2021</td></tr>
    <tr><td>31-Dec-2021</td></tr>
  </tbody>
</table>

【讨论】:

【参考方案3】:

您的函数anotherFunction 用于滚动到具有文本'some text' 的表格内的元素。

您只需要使用文本的一些动态参数触发函数anotherFunction

下面是它的完成方式。

function firstFunction() 
    const monthNames = ["Jan", "Feb", "Mar", "Apr", "May", "Jun",
        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
    ];
    const d = new Date();
    var today = new Date();
    var date = today.getDate() + '-' + monthNames[d.getMonth()] + '-' + today.getFullYear();
    document.getElementById("date").innerHTML = date;
    anotherFunction(date)


function anotherFunction(text) 
    $(window).scrollTop($(`table:contains($text):last`).offset().top);
table 
    margin-bottom: 100vh;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<table>
    <tr>
        <th>Scroll to bottom and click the button</th>
    </tr>
    <tr>
        <td id="date">Your Date Will Appear here</td>
    </tr>
</table>
<button onclick="firstFunction()">Call First Function</button>

【讨论】:

以上是关于对将 JS 变量插入 Jquery 感到困惑的主要内容,如果未能解决你的问题,请参考以下文章

使用实体框架时对将业务逻辑放在哪里感到困惑

链表,对将节点添加到链表头部的函数感到困惑

我认为我对变量感到困惑

不平衡的模型,对采取啥步骤感到困惑

引号内的 Jquery 变量返回语法错误

在firebase(JAVA)中插入一个字符串变量作为键(子)