javascript - 使用 GetElementById 传递多个值(在特定字符后拆分)

标签 javascript asp.net split webforms getelementbyid

我几乎没有 JavaScript 经验,但我知道 getElementID 只携带一个值,所以我怎么能传递 2 个值? 我可以像下面那样使用它两次,还是使用另一种 GetElementBy/GetElementsBy 方法更好?

<script type="text/javascript">
$(document).ready(function () {
           hash();
            function hash() {
                var hashParams = window.location.hash.substr(1).split('&');
                for (var i = 0; i < hashParams.length; i++) {
                    var p = hashParams[i].split('=');
                    document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(p[1]);
                    document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(p[1]);;
                }
                
            }
        });
 </script>

编辑 因此,我决定使用循环两次并使其正常工作,但我传递的值包含我需要删除的文本。有没有办法可以在某个 Angular 色之后切断拆分?这是我的新代码

<script type="text/javascript">

        $(document).ready(function () {
             hash();
            function hash() {
                var hashParams = window.location.hash.substr(1).split('#');
                for (var i = 0; i < hashParams.length; i++) {
                    var p = hashParams[i].split('=');
                    document.getElementById("<%=start.ClientID%>").value = decodeURIComponent(p[1]);
                }
                var hashParams = window.location.hash.substr(1).split('&');
                for (var i = 0; i < hashParams.length; i++) {
                    var p = hashParams[i].split('=');
                    document.getElementById("<%=end.ClientID%>").value = decodeURIComponent(p[1]);;
                }
                
            }
        });
 </script>

这是从上一页转发时出现在搜索栏中的文本。 localhost:56363/Bookings.aspx#start=27/02/2018 12:30&end=27/02/2018 17:30

开始和结束输入框填充了值,但开始输入框 (27/02/2018 12:30&end) 有我要 chop 的字符 (&end)。 有没有办法在某个字符后停止拆分?

最佳答案

使用它两次是完全可以接受的。而且,如果它们是分开的东西,那么它就有意义了。

虽然您也可以使用 getElementsByTagName()getElementsByName()getElementsByClassName(),但通常使用 document.querySelectorAll( ) 是更现代的选择。

如果他们有一些共同点(比如类),你可以这样使用它:

const nodeList = document.querySelectorAll('.classToGet');
Array.prototype.forEach.call(nodeList, element => element.value = decodeURIComponent(p[1]));

document.querySelectorAll()(以及 getElementsBy 函数)返回一个 NodeList,有点像 Array,但没有 Array 的函数,所以你需要 Array.prototype.forEach.call() 来循环它们。

document.querySelectorAll() 接受您提供给 CSS 的字符串,并且 NodeList 具有匹配该字符串的所有元素。

仅供引用,有一个等效的 document.querySelector() 获取单个元素,因此您可以将它用于 ID:

document.querySelector("#<%=start.ClientID%>")

注意 #,就像您在开头使用 CSS 一样。

关于javascript - 使用 GetElementById 传递多个值(在特定字符后拆分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49017294/

相关文章:

javascript - 如何在 angularjs 中的指令内使用 JSON 数组过滤器?

javascript - 如何使用http post发送toDataURL 'image/png'对象?

javascript - 在 JavaScript 中构建时间戳

javascript - 在 javascript 中创建的跨度在网页中显示为 [object HTMLSpanElement]

javascript - 在 FF 中关注文本框不跟随警报?

c# - 没有事件连接的运行方法

r - 拆分字符串最后一个分隔符

javascript - RegExp/JavaScript : Split string on multiple characters, 保留分隔符而不使用lookbehind

regex - 我可以使用什么正则表达式来查找逗号分隔列表中的 Nᵗʰ 条目?

javascript - 我的网站上有一个返回页面顶部的按钮,如何设置滚动回顶部的动画?