2013-10-21 132 views
-3

這裏我試圖調用錨定標記的javascript函數onclick。當我打電話onclick函數,什麼都沒有發生..如何調用javascript函數

我什至在我的JavaScript函數警報,即使警報也沒有發生。

這裏是我的代碼:

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById("rte1"),"code")"></td>'); 

javascript函數:

function applyTag(obj, tag) 
{ 
    wrapText(obj, '<'+tag+'>', '</'+tag+'>'); 
    alert("hello 1"); 
}; 

function wrapText(obj, beginTag, endTag) 
{ 
alert("hello 2"); 
    if(typeof obj.selectionStart == 'number') 
    { 
     var start = obj.selectionStart; 
     var end = obj.selectionEnd; 
     obj.value = obj.value.substring(0, start) + beginTag + obj.value.substring(start, end) + endTag + obj.value.substring(end, obj.value.length); 
    } 
    else if(document.selection) 
    { 
     obj.focus(); 
     var range = document.selection.createRange(); 
     if(range.parentElement() != obj) return false; 
     if(typeof range.text == 'string') 
     document.selection.createRange().text = beginTag + range.text + endTag; 
    } 
    else 
    obj.value += text; 
}; 

我怎麼能解決這個問題?

+1

什麼被記錄在控制檯? – Abhitalks

回答

1

如果你不只要第一個雙引號會遇到逃脫雙引號的話,你的onclick陳述會結束導致JavaScript錯誤。

所以不是這個

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById("rte1"),"code")"></td>'); 

你應該使用

document.writeln('<td><img class="rteImage" src="' + imagesPath + 'code.gif" width="25" height="24" alt="Code" title="Code" onClick="applyTag(document.getElementById(\'rte1\'),\'code\')"></td>'); 
+1

我真的很困惑。這個答案甚至不起作用。反斜槓在這個字符串中是沒有意義的,因爲它是單引號的,即使它們是輸出HTML/XML也不會讓你用反斜槓來引用引號。爲什麼它被提升並被接受? – DaoWen

+0

@DaoWen該字符串是單引號,它試圖顯示html元素,但是當元素被瀏覽器解釋時,它會看到onclick =「applyTag(document.getElementById(\」rte1 \「),\」code \「)」 。現在因爲onclick在這裏使用雙引號,所以我們需要轉義它 – Shadow

+0

你試過了嗎?我做了**,**不起作用**有兩個原因。首先,轉義的'\''被_JavaScript string_解釋爲''',所以實際的輸出變成'onclick =「applyTag(document.getElementById(」rte1「),」code「)」',這是_exactly與以前一樣。其次,HTML/XML使用轉義字符的'''轉義實體',而不是反斜槓。即使你使用'\\''在輸出中顯示了反斜槓,那實際上並不會引用這些引號。請嘗試運行你發佈的代碼,並讓我知道是否我錯了。 – DaoWen

3

你似乎有嵌套的報價問題:

document.write('... onClick="applyTag(document.getElementById("rte1"),"code")"> ...') 

修復,可能是使用',而不是和逃避他們(因爲你是用單引號產生最簡單的方法字符串使用document.write):

document.write('... onClick="applyTag(document.getElementById(\'rte1\'),\'code\')"> ...')