比方说我有:
directives.directive('foo', function () {
return {
restrict:'A',
scope: true,
link:function (scope, element, attr) {
console.log('innerHTML is ' + element.innerHTML);
scope.$watch('update', function (newValue) {
console.log('innerHTML is... ' + element.innerHTML);
});
}
}
});
Run Code Online (Sandbox Code Playgroud)
...然后innerHTML未定义.我想这是由于Angular处理DOM的方式.获取innerHTML的正确方法是什么?
我正在动态生成内容,在某些情况下,我需要将a设置 为<span>元素的唯一内容.
但是,以下添加 为文本vs添加空格:
var foo = document.createElement("span")
foo = document.createTextNode(" ");
Run Code Online (Sandbox Code Playgroud)
这是有道理的,所以我想知道,如果 没有(!)使用,我将如何正确添加innerHTML
感谢帮助!
javascript whitespace innerhtml createtextnode createelement
我使用页面获取脚本动态地将网页加载到div中.继承人的代码.BTW Im使用Firefox w/Kubuntu
function fetch(URL, divId) {
req = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");
req.open("GET", URL);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById(divId).innerHTML = req.responseText;
}
}
req.send(null);
}
Run Code Online (Sandbox Code Playgroud)
当我试图让它加载页面没有任何反应,我得到一个错误
错误:文档元素之后的垃圾
源文件:file:///home/amnite/Stuff/MetalBraska/Shows/ContentRight.html
行:2,列:1
源代码:
<img src="Layout/HeaderDiv.jpg" width="250px" height="7px">
我正在创建一个样式元素,我需要将一些CSS放入其中.以下代码适用于Chrome,Safari和FF,但在IE8中失败:
var styleElement = document.createElement("style");
styleElement.type = "text/css";
styleElement.innerHTML = "body{background:red}";
document.head.appendChild(styleElement);
Run Code Online (Sandbox Code Playgroud)
在IE8中,代码在innerHTML部分时失败了.我试过做:
var inner = document.createTextNode("body{background:red}");
styleElement.appendChild(inner);
Run Code Online (Sandbox Code Playgroud)
但是,"意外调用方法或属性访问"也失败了.我正在寻找解决方法或解决方法.
我想从DOM中检索某个带有其属性的标记元素.例如,来自
<a href="#" class="class">
link text
</a>
Run Code Online (Sandbox Code Playgroud)
我希望得到<a href="#" class="class">,可选择关闭</a>,作为字符串或其他对象.在我看来,这类似于检索.outerHTML没有的.innerHTML.
最后,我需要通过jQuery包装其他一些元素.我试过了
var elem = $('#some-element').get(0);
$('#some-other-element').wrap(elem);
Run Code Online (Sandbox Code Playgroud)
但.get()返回包含其内容的DOM元素.也
var elem = $('#some-element').get(0);
$('#some-other-element').wrap(elem.tagName).parent().attr(elem.attributes);
Run Code Online (Sandbox Code Playgroud)
失败,因为elem.attributes返回a NamedNodeMap不能与jQuery一起工作,attr()我无法转换它.承认上面的例子不是很有意义,因为它们还复制了元素的不再唯一ID.但有什么简单的方法吗?非常感谢.
我有一个事件冒泡的情况.示例:
<td (click)="doSomething()">
<text [innerHtml]="content">
// content of innerHtml is : <a href="http://google.com"></a>
</text>
</td>
Run Code Online (Sandbox Code Playgroud)
标签通过innerHtml从另一个组件呈现.问题:当我点击链接时,也会触发元素的click事件.如何解决问题(停止传播doSomething()),知道事件处理程序(或任何角度2代码)不能通过innerHtml传递?
谢谢!
innerhtml event-bubbling typescript angular2-template angular
我知道innerHTML被认为是邪恶的,但我认为这是改变链接文本的最简单方法.例如:
<a id="mylink" href="">click me</a>
Run Code Online (Sandbox Code Playgroud)
在JS中,您可以使用以下命令更改文本:
document.getElementById("mylink").innerHTML = new_text;
Run Code Online (Sandbox Code Playgroud)
在Prototype/jQuery中:
$("mylink").innerHTML = new_text;
Run Code Online (Sandbox Code Playgroud)
工作良好.否则,您必须先替换所有子节点,然后添加文本节点.何必?
当你在IE中获得DOM节点的innerHTML时,如果属性值中没有空格,IE将删除它周围的引号,如下所示:
<html>
<head>
<title></title>
</head>
<body>
<div id="div1"><div id="div2"></div></div>
<script type="text/javascript">
alert(document.getElementById("div1").innerHTML);
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
在IE中,警报将显示为:
<DIV id=div2></DIV>
Run Code Online (Sandbox Code Playgroud)
这是一个问题,因为我将此传递给需要有效XHTML的处理器,并且必须引用所有属性值.有谁知道在IE中解决这种行为的简单方法?
我可以使用什么Xpath表达式来查找实际文本(innerHTML)是Logout的所有锚(只是'a')元素.
就像是
//a[@innerHTML='Logout']
Run Code Online (Sandbox Code Playgroud)
这是对的吗?
我的HTML 5应用程序的用户可以在表单中输入他的名字,此名称将显示在其他地方.更具体地说,它将成为innerHTML一些HTML元素.
问题是,如果您在表单中输入有效的HTML标记,即可以使用某种HTML注入,则可以利用此功能.
用户名只存储并显示在客户端,因此最终用户自己是唯一受影响的人,但它仍然很草率.
在将它innerHTML放入Dojo 中的元素之前,有没有办法逃避字符串?我猜Dojo在某一点确实有这样的函数(dojo.string.escape())但它在版本1.7中不存在.
谢谢.
innerhtml ×10
javascript ×6
dom ×2
ajax ×1
angular ×1
angularjs ×1
coding-style ×1
dojo ×1
escaping ×1
html ×1
jquery ×1
outerhtml ×1
typescript ×1
whitespace ×1
xhtml ×1
xpath ×1