2012-12-20 75 views
0

我試着寫類似的圖像字體生成器,但我不能檢查,如果表單值是一個空間,或給一個網址的空白圖像。檢查值是一個空白

這裏是我的代碼:

<html><head><title>untitled</title> 
<script type="text/javascript"> 
<!-- 
function fontgen(text) { 
    var url = './fonts/'; 
    var letters = text.split(''); 
    var imgStr = ""; 
    for (var i in letters) { 
    imgStr += '<img src="' +url+letters[i]+ '.gif">'; 
    } 
    document.getElementById('name').innerHTML = imgStr; 
    return false; 
} 
//--> 
</script> 
</head> 

<body> 
<form name="myform" action=""> 
<input type="text" name="myinput" size="20"><br> 
<input type="button" value="Make Font" onclick="return fontgen(document.myform.myinput.value)"> 
</form> 
<div id="name"></div> 
</body> 
</html> 
+4

'for ... in'在數組上?不要這樣做 –

回答

2
function fontgen(text) { 
    var url = './fonts/', 
     letters = text.split(''), 
     imgStr = ""; 

    // First, you need a valid for loop: 
    for (var i = 0; i < letters.length; i++) { 
     if (letters[i] !== ' ') { // then, check to see if it is a space 
      imgStr += '<img src="' +url+letters[i]+ '.gif">'; 
     } 
    } 
    document.getElementById('name').innerHTML = imgStr; 
    return false; 
} 
+0

10倍,但我試圖用另一個圖像替換它 –

+1

@DavidAbgaryan:你用什麼意思替換它與另一個圖像?空間?在這種情況下:'text.replace(/ \ s/g,'');'照顧你的一切。只需替換字母,跳過空格或使用正則表達式和回調函數替換所有字符與相應的圖像。我會添加一個後者的例子到我的回答 –

0

從我可以從你的問題告訴,你正在尋找的東西是這樣的:

for (var i=0;i<text.length;i++) 
{ 
    if (text.charAt(i) !== ' ') 
    {//using charAt, you're supporting all browsers, without having to split the string 
     console.log(text.charAt(i) + ' is not space'); 
    } 
} 

但這樣做的一個簡單的方法此,不受具有1至通過所有字符循環,如圖1所示,是這樣的:

if (text.indexOf(' ') === -1) 
{ 
    console.log('No spaces in ' + text + ' found'); 
} 

或者,如果你願意,你可以替換或刪除一氣呵成的所有空格:

text = text.replace(/\s/g,'_');//replaces spaces with underscores 
text = text.replace(/\s/g, '');//removes spaces 

正則表達式狂熱的方式。假設你有一組特定的字符爲GIF格式,您可以輕鬆地使用單個的正則表達式中的一個與它們對應的圖像,以取代所有這些字符一舉:

var imgString = text.replace(/([a-z0-9\s])/gi, function(char) 
{ 
    if (char === ' ') 
    { 
     char = 'space';//name of space img 
    } 
    return '<img src="'url + char + '.gif"/>'; 
}); 

同樣的邏輯也適用於字符像!.,因爲他們是不完全適合文件的名稱,使用對象,數組或切換與它們對應的文件名來替換它們。
。不管怎麼樣,像foo bar輸入以上代碼的輸出應該是這個樣子:

<img src="./fonts/f.gif"/><img src="./fonts/o.gif"/><img src="./fonts/o.gif"/><img src="./fonts/space.gif"/><img src="./fonts/b.gif"/><img src="./fonts/a.gif"/><img src="./fonts/r.gif"/> 

不知道爲什麼你的路徑是./foo/[].gif,我懷疑foo/[].gif會做一樣好,但是這根本不是問題手在這裏。
如果你有興趣:here's some more about replacing using regex's and callbacks

0

嘗試更換字母[I] 有:

(letters[i] == " ") ? "spacefilename" : letters[i] 

這是一個三元運算符。基本上是一個速記如果能夠在一定意義上直接用於代替字母[I]

聲明它會像替換字母[I]與mYfILEname的名稱(字母[I]) 其中mYfILEname的名稱功能是

function myfilename(char) 
{ 
    if (char == " ") { 
    return "space"; 
    } else { 
    return char; 
    } 
} 

所以你的代碼應該是這樣的:

<html><head><title>untitled</title> 
<script type="text/javascript"> 
<!-- 
function fontgen(text) { 
    var url = './fonts/'; 
    var letters = text.split(''); 
    var imgStr = ""; 
    for (var i = 0; i < letters.length; i++) { 
    imgStr += '<img src="' +url+(letters[i] == " ") ? "spacefilename" : letters[i]+ '.gif">'; 
    } 
    document.getElementById('name').innerHTML = imgStr; 
    return false; 
} 
//--> 
</script> 
</head> 

<body> 
<form name="myform" action=""> 
<input type="text" name="myinput" size="20"><br> 
<input type="button" value="Make Font" onclick="return fontgen(document.myform.myinput.value)"> 
</form> 
<div id="name"></div> 
</body> 
</html> 

/E也爲別人所提到的,for循環是錯誤的。我剛剛糾正了這一點。 一個「爲......在」循環可以在那裏工作......不願意進入所有,雖然。

+0

不適合我:( –

+0

for循環是壞的,我爲你修復了它 – Kenji

+0

它給了我一個錯誤:「字母未定義」 –

0

嘗試改變字符到一個char代碼並具有要支持每個代碼對應的圖像文件;您也可以通過if語句,以確保代碼落在你的接受範圍內把範圍檢查。

function fontgen(text) 
{ 
    var imgStr = ""; 
    for (var i = 0; i < text.length; i++) 
    imgStr += '<img src="./fonts/' + text[i].charCodeAt(0) + '.gif">'; 

    document.getElementById('name').innerHTML = imgStr; 

    return false; 
} 

如果提供此功能的那句「這是一個測試」將導致:

<div id="name"> 
    <img src="./fonts/116.gif"> 
    <img src="./fonts/104.gif"> 
    <img src="./fonts/105.gif"> 
    <img src="./fonts/115.gif"> 
    <img src="./fonts/32.gif"> 
    <img src="./fonts/105.gif"> 
    <img src="./fonts/115.gif"> 
    <img src="./fonts/32.gif"> 
    <img src="./fonts/97.gif"> 
    <img src="./fonts/32.gif"> 
    <img src="./fonts/116.gif"> 
    <img src="./fonts/101.gif"> 
    <img src="./fonts/115.gif"> 
    <img src="./fonts/116.gif"> 
</div> 

<img src="./fonts/32.gif">將空間形象。