2012-08-25 52 views
1

我知道有很多類似這裏的問題,甚至我的一個觸及此方式 - 但我在這個特定的代碼掙扎,作爲一個JS新手,我不能在哪裏我要去錯了。將變量傳遞給Javascript函數 - 語法?

我基本上適應TinyMCE擺脫彈出對話框(取代他們與我自己的,保持乾淨)。我現在正在處理的是插入圖像。這是我現在的功能;

<script type="text/javascript"> 
function addImage(imgurl){ 
tinyMCE.execCommand('mceInsertContent',false,'<img src=" +imgurl+ " style="float:left; margin: 0 5px 5px 0;" />'); 
} 
</script> 

和鏈接

<a href="javascript:;" onclick="addImage('/myimage.jpg');return false;">[Insert Image]</a> 

功能「作品」,因爲它插入代碼,但「imgUrl的」(myimage.jpg,在這個例子中)不被傳遞 - 代替插入/myimage.jpg,插入+ imgurl +。

指針從這個新手非常讚賞!

+0

你已經有了很多正確的答案,但是對你來說一個有用的提示是仔細看看編輯器中的語法高亮。例如,如果你將你的函數粘貼到jsfiddle.net的JavaScript框中,你將會看到imageurl這個字的顏色和字符串的其餘部分是一樣的(這意味着它是字符串的一部分)。當你進行修復時,它會變成藍色,告訴你它是一個變量。見http://jsfiddle.net/rtoal/D9Z5C/ –

+0

謝謝 - 這是一個很好的建議!至少修正了 – Lee

回答

3

您的拼接是不正確的......當打開與

function addImage(imgurl){ 
    tinyMCE.execCommand('mceInsertContent',false,'<img src="'+imgurl+'" style="float:left; margin: 0 5px 5px 0;" />'); 
} 

單引號,CONCAT用單引號。當使用雙引號,使用雙引號,你可以找到噸易教程,expla的在串聯中深入。一般規則是一致的。如果將字符串用雙引號括起來,單引號不會停止字符串的解析,因爲編譯器會識別雙引號來執行此操作。單引號也是一樣。下面的代碼將解析Hello'; // broken string作爲字符串,就像使用錯誤的引號連接一樣。

var string = "Hello'; // broken string 

一個好辦法來避免這樣的問題(因爲即使是專業程序員仍然有語法錯誤,每過一段時間)是一個很好用的程序編輯器(記事本++,崇高的2尾,TextMate是phpad),其有語法突出顯示。即使是stackoverflow.com擁有的簡單的熒光筆也是足夠的。通過查看上面的代碼,可以知道雙引號(")後面的所有內容仍然被解析爲字符串,因爲它仍然與字符串顏色相同,而變量在通過語法突出顯示器時會改變顏色。

+0

,但它確實不是問題。如果可以的話,我會給'img'一個類,然後使用'style'元素來正確地設置它的樣式,而不是使用內聯樣式......但這不是問題。 – jeremy

+0

Thanks @Nile - 已解決它。不使用css的原因是因爲代碼被放置在wysiwyg編輯器中。 – Lee

1

你傳遞的變量就好了。問題是你是而不是連接它的值,但是一個字符串的值爲+imgurl+。改用以下(注意關閉和之前開始'+ imgurl +後:

tinyMCE.execCommand('mceInsertContent',false,'<img src="' +imgurl+ '" style="float:left; margin: 0 5px 5px 0;" />'); 
0

您的字符串格式不正確:

'<img src="' + imgurl + '" style="float:left margin: 0 5px 5px 0;" />';