使用GetElementById传递多个值(并在某个字符后分割)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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>

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

<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/201 12:30&end = 27/02/2018 17:30

开始和结束输入框填充值,但开始输入框(27/02/2018 12:30和结束)包含我想要剪切的字符(和结束)。有没有办法在某个角色后停止分裂?

答案

使用它两次是完全可以接受的。并且,如果它们是分开的东西,那么它是有道理的。

虽然你也可以使用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一样。

另一答案

ID是一个唯一的标识符,与类不同,因此在DOM中只应有一个具有相同名称的标识符。

另一答案

getElementById旨在查找具有指定ID的DOM中的一个元素。

如果你需要获得多个元素,那么是多次调用getElementById。

请参阅此处获取有关getElementById方法的文档,该方法显示它只接受单个ID参数:https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementById

以上是关于使用GetElementById传递多个值(并在某个字符后分割)的主要内容,如果未能解决你的问题,请参考以下文章

如何将这些多个查询结果传递给MVC中的视图?

使用 jquery 加载多个音频文件,并在完成时进行回调

如何将 select 语句的 IN 子句中的参数作为具有多个值的参数传递?

将不同类型的值传递给着色器

如何从JavaScript传递值到asp页面?

IOS 将值从 App Delegate 传递到初始视图控制器并在 viewWillAppear 中使用这些值