使用GetElementById传递多个值(在某个字符后使用& Split)

时间:2018-02-27 20:22:22

标签: 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>

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

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

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

3 个答案:

答案 0 :(得分:3)

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

虽然您也可以使用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,但没有数组&# 39; s函数,所以你需要Array.prototype.forEach.call()来循环它们。

document.querySelectorAll()接受一个类似于你给CSS的字符串,NodeList具有与之匹配的所有元素。

而且仅供参考,有一个等价的document.querySelector()可以获得单个元素,因此您可以将其用于ID:

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

注意#就像你在开始时对CSS一样。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

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