Tìm kiếm trang web

Javascript getElementById dựa trên một chuỗi một phần


Tôi cần lấy ID của một phần tử nhưng giá trị là động, chỉ có phần đầu tiên của nó luôn giống nhau.

Đây là một đoạn mã.

<form class="form-poll" id="poll-1225962377536" action="/cs/Satellite">

ID luôn bắt đầu với poll- sau đó các con số là động.

Làm thế nào tôi có thể lấy ID chỉ bằng JavaScript mà không dùng jQuery?

Câu trả lời #1

Bạn có thể sử dụng querySelector cho việc đó:

document.querySelector('[id^="poll-"]').id;

Bộ chọn có nghĩa là:
lấy một phần tử mà thuộc tính [id] bắt đầu với (^=) chuỗi "poll-".

^ khớp với đầu
* khớp với bất kỳ vị trí nào
$ khớp với cuối

Ví dụ

console.log(document.querySelector('[id^=poll-]').id)
<form id="poll-1225962377536"></form>

Câu trả lời #2

querySelectorAll với liệt kê hiện đại

polls = document.querySelectorAll('[id ^= "poll-"]');
Array.prototype.forEach.call(polls, callback);

function callback(element, iterator) {
    console.log(iterator, element.id);
}

Dòng đầu tiên chọn tất cả các phần tử mà id bắt đầu bằng ^= với chuỗi poll-. Dòng thứ hai gọi ra việc liệt kê và một hàm callback.

Câu trả lời #3

Thử cái này.

function getElementsByIdStartsWith(container, selectorTag, prefix) {
    var items = [];
    var myPosts = document.getElementById(container).getElementsByTagName(selectorTag);
    for (var i = 0; i < myPosts.length; i++) {
        //omitting undefined null check for brevity
        if (myPosts[i].id.lastIndexOf(prefix, 0) === 0) {
            items.push(myPosts[i]);
        }
    }
    return items;
}

Ví dụ đánh dấu HTML.

<div id="posts">
    <div id="post-1">post 1</div>
    <div id="post-12">post 12</div>
    <div id="post-123">post 123</div>
    <div id="pst-123">post 123</div>
</div>

Gọi nó như

var postedOnes = getElementsByIdStartsWith("posts", "div", "post-");

Demo ở đây: http://jsfiddle.net/naveen/P4cFu/

Bài viết liên quan