簡體   English   中英

在C#字符串生成器對象中將javascript錯誤與硬編碼的html鏈接

[英]Linking javascript error with hard-coded html in C# string builder object

這可能是我在研究別人的代碼時第一次必須處理javascript錯誤。 請幫幫我。

當有人提交按鈕時,該網絡表單應該發送電子郵件。 但是,會觸發javascript錯誤,阻止這樣做:

javacript彈出窗口

所以這是我擊中是要帶我去的地方

頁面錯誤行號

我跟蹤並在下面看到了這段代碼

問題是:彈出窗口中的“顯示”屬性是否引用行標簽<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM