我想首先使用正則表達式來查找div(因爲它的類名有點動態)。在Javascript中使用正則表達式查找和更改div
一旦發現,然後我需要在div放置一個字段裏面,所以我最終的
<fieldset class="...">
<div class="the one I found">...</div>
</fieldset>
最終輸出如何能在JavaScript這樣做呢?
許多感謝, 史蒂夫
我想首先使用正則表達式來查找div(因爲它的類名有點動態)。在Javascript中使用正則表達式查找和更改div
一旦發現,然後我需要在div放置一個字段裏面,所以我最終的
<fieldset class="...">
<div class="the one I found">...</div>
</fieldset>
最終輸出如何能在JavaScript這樣做呢?
許多感謝, 史蒂夫
這將是難以用正則表達式和不明智的事情。例如,如果div包含其他div,該怎麼辦?找到正確的結束div標記不是正則表達式可以做的事情,因爲HTML不是常規語言。
在另一方面,這是一個很普通內膽採用jQuery:
$("div.someClass").wrap("<fieldset class='...'></fieldset>");
它當然可以用香草的Javascript DOM使用像做:當然需要
var divs = document.getElementsByTagName("div");
for (var i=0; i<divs.length; i++) {
if (divs[i].className == "...") {
var fs = document.createElement("fieldset");
fs.className = "...";
var parent = divs[i].parentNode;
parent.insertBefore(fs, divs[i]);
fs.appendChild(divs[i]);
}
}
你要填寫放在fieldset上的什麼類,並更改div上的測試以確定是否需要操作它。
div最definitly將包含其他div。我需要將它及其所有子元素複製到字段集中。我如何使用正則表達式找到「someClass」的名稱? –
使用jquery,你可以試試這個:
var classes = $(document.body).html().match(/class="pattern"/g); // find classname matchin pattern
for(i in classes) {
var nodes = $('.'+classes[i].substr (7, str.length - 8));
nodes.wrap("<fieldset class='...' />");
}
window.onload = function() {
var params = {
has: "something"
};
// var fieldset = doc... get field the same as with div.
var divs = document.getElementsByTagName("div");
for (var i = 0; i < divs.length; i++) {
if (params.has.indexOf(divs[i].className) > 0) {
// fieldset.innerHTML = divs[i].innerHTML;
divs[i].innerHTML = "<fieldset class=''> + divs[i].innerHTML + "</fieldset>";
}
}
}
無需使用正則表達式,的indexOf方法就足夠了。並且不需要使用jquery。 Javascript具有良好的字符串和數組函數 - 使用它們,但DOM是一團糟。
DIV是文檔的DOM嗎?如果是這樣,請改用DOM方法。 – Gumbo
是的,div包含在DOM中。我如何使用DOM方法? –
'document.getElementsByClassName'(https://developer.mozilla.org/en/DOM/document.getElementsByClassName)。 – kennytm