将javascript字符串转换为html对象

IT技术 javascript html
2021-03-11 14:42:26

我可以将字符串转换为 html 对象吗?喜欢:

string s = '<div id="myDiv"></div>';
var htmlObject = s.toHtmlObject;

这样我以后就可以通过 id 获取它并对其样式进行一些更改

var ho = document.getElementById("myDiv").style.marginTop = something;

提前一百万,莉娜

5个回答
var s = '<div id="myDiv"></div>';
var htmlObject = document.createElement('div');
htmlObject.innerHTML = s;
htmlObject.getElementById("myDiv").style.marginTop = something;
这并不完全正确,因为您不能在创建的 htmlObject 实例上调用 getElementById。
2021-04-26 14:42:26
是的,或者只是htmlObject.firstChild因为你知道那是它永远存在的地方。
2021-05-06 14:42:26
您可以将 htmlObject 附加到文档片段以使用 getElementById,例如 var fragment = document.createDocumentFragment(); fragment.appendChild( htmlObject ); fragment.getElementById("myDiv").style.marginTop = something;
2021-05-20 14:42:26

你不能只用方法来做到这一点,除非你使用一些支持它的 javascript 框架,比如 jquery ..

string s = '<div id="myDiv"></div>'
var htmlObject = $(s); // jquery call

但是,它仍然不会被 找到,getElementById因为要使其工作,元素必须在 DOM 中……只是在内存中创建不会将它插入到 DOM 中。

您需要先使用appendappendToafter等将其放入 dom 中..

当然,所有这些都可以通过常规的 javascript 来完成,但是完成同样的事情需要更多的步骤......并且在这两种情况下逻辑是相同的......

jQuery 很酷,但它只是 JavaScript
2021-04-28 14:42:26
请删除说“你只能用jquery来做”的那部分。这是完全错误的。
2021-05-01 14:42:26
很好的方法 :) 所以我可以写 $(s).css("margin-top") 来获得顶部边距,然后修改它并将其写入页面......我喜欢这个答案:D
2021-05-16 14:42:26
很高兴你喜欢它 Lina :) 我认为在将它插入到 DOM 之前,尺寸/属性是无法获得的。这是有道理的,因为一个元素会受到它在 DOM 中插入位置的影响......对象仍然有效,所以一旦你将它插入到 DOM 中,你就可以查询它的大小属性,比如宽度/高度/边距等。
2021-05-21 14:42:26

有同样的问题。我使用了这样一个肮脏的技巧:

var s = '<div id="myDiv"></div>';
var temp = document.createElement('div');
temp.innerHTML = s;
var htmlObject = temp.firstChild;

现在,您可以按照自己喜欢的方式添加样式:

htmlObject.style.marginTop = something;
如果您尝试解析类似<thead>...</thead>因为thead不允许在 div 中的内容,则它将不起作用
2021-04-21 14:42:26
@ user7331530 那是因为more text是第二个孩子。如果你想要一切,请使用temp. 如果需要more text,请使用temp.childNodes[1].
2021-05-08 14:42:26
请注意使用此方法的人,如果您创建了一个多行字符串模板,则第一个子节点可能是一个文本节点(字符串开头的空格)。您可能需要测试/迭代以获取实际元素。
2021-05-15 14:42:26
如果字符串是“<div id="myDiv"></div>more text”怎么办?它只会返回 <div id="myDiv"></div>
2021-05-20 14:42:26

除了Gaby aka的方法,我们还可以htmlObject通过这种方式找到里面的元素——

htmlObj.find("#box").html();

小提琴在这里可用 - http://jsfiddle.net/ashwyn/76gL3/

是的,这有效
2021-05-02 14:42:26

如果您打算使用的浏览器是 Mozilla(插件开发)(不确定 chrome)您可以在 Javascript 中使用以下方法

function DOM( string )
{
    var {Cc, Ci} = require("chrome");
    var parser = Cc["@mozilla.org/xmlextras/domparser;1"].createInstance(Ci.nsIDOMParser);
    console.log("PARSING OF DOM COMPLETED ...");
    return (parser.parseFromString(string, "text/html"));
};

希望这可以帮助