[英]Linking javascript error with hard-coded html in C# string builder object
这可能是我在研究别人的代码时第一次必须处理javascript错误。 请帮帮我。
当有人提交按钮时,该网络表单应该发送电子邮件。 但是,会触发javascript错误,阻止这样做:
所以这是我击中是要带我去的地方
我跟踪并在下面看到了这段代码
问题是:弹出窗口中的“显示”属性是否引用行标签<td>的属性“样式”的值? cellColor初始化为'ffffff',即cellColor =“ ffffff”; 如果cellColor曾经是undefined / null,cellColor是否会导致属性“ display”为undefined / null?
align ='left valign = middle style = background-color:#“ + cellColor +”; 边框:实心1px#000000; \\“>”
(这是我跟踪的代码)
我是公认的JS骇客; JS大师可能有更好的解决方案...
这里的问题是,每当子节点不包含带有显示属性的内联样式时, divHRSupervisors.childNodes[i].style.display != 'none'
都会引发未定义的错误。
将工作:
<div style="display: block;">content</div>
- or -
<div style="display: none;">content</div>
不管用:
<div>content</div>
此外,无论何时使用childNodes
,都将包括所有节点,包括文本。 例如...
'Test'div的0个子节点:
<div id="Test"></div>
'Test'div的1个子节点(div内的文本算作一个子节点):
<div id="Test">content</div>
3个用于“测试” div的子节点(1个用于主要文本内容,1个用于内部<div>
,1个用于内部<div>
的内容):
<div id="Test">
content
<div>child content</div>
</div>
使用当前JS中的条件测试,只要遇到子节点没有内联样式的显示集,就会抛出错误。
一种解决方案是将公共类添加到要检查style.display
属性的任何元素,然后检查显示是否设置为none。 类似于以下内容:
var divs = document.getElementById("divHRSupervisors");
var children = divs.childNodes;
for (var i = 0; i < children.length; i++) {
var child = children[i];
// someClass is a class applied to all elements you want to verify
if (child.className == 'someClass') {
// check to see if there is a display property and if the display
// property does not equal none.
if (child.style.display && child.style.display != 'none') {
alert(child.nodeName);
// do other stuff.
}
}
}
您的HTML将类似于以下内容(请注意someClass的使用):
<div id="divHRSupervisors">
<div class="someClass">hello</div>
<div class="someClass" style="display: block;">world</div>
</div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.