2014-11-18 2 views
0

В чем проблема с этим кодом? Я хочу заглавной первую букву каждого словаПочему бы не запустить? (Заполните буквы первой буквы каждого слова)

function capitalizeEachWord(str) 
{ 
    var words = str.split(" "); 
    var arr = Array(); 
    for (i in words) 
    { 
     temp = words[i].toLowerCase(); 
     temp = temp.charAt(0).toUpperCase() + temp.substring(1); 
     arr.push(temp); 
    } 
    return arr.join(" "); 
     var first=document.getElementById(textbox1).value; 
     document.getElementById("resualt").innerHTML=arr; 
    } 
+0

[Посмотрите здесь] (http://stackoverflow.com/questions/1026069/capitalize-the-first-letter-of-string-in-javascript) –

+1

@ Andy Скорее всего, он ожидая код в функции * после * инструкции 'return' для выполнения. –

ответ

0

Попробуйте это, если идентификатор resualt правильно. Я поставил скрипача на тест.

document.getElementById("resualt").innerHTML = str.replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 

Demo

0

Вы возвращаетесь из функции перед обновлением элемента.

function capitalizeEachWord(str) 
{ 
    var words = str.split(" "); 
    var arr = Array(); 
    for (i in words) 
    { 
     temp = words[i].toLowerCase(); 
     temp = temp.charAt(0).toUpperCase() + temp.substring(1); 
     arr.push(temp); 
    } 
    return arr.join(" "); // From now on, it's dead code. 
    var first=document.getElementById(textbox1).value; 
    document.getElementById("resualt").innerHTML=arr; 
} 

Попробуйте сделать это:

function capitalizeEachWord(str) 
{ 
    var words = str.split(" "); 
    var arr = Array(); 
    for (i in words) 
    { 
     temp = words[i].toLowerCase(); 
     temp = temp.charAt(0).toUpperCase() + temp.substring(1); 
     arr.push(temp); 
    } 
    var strCapitalized = arr.join(" "); // Store it in a variable 
    var first=document.getElementById(textbox1).value; 
    document.getElementById("resualt").innerHTML = strCapitalized; // Use the variable 
} 
+0

Или они могут попробовать вернуть значение, а затем установить свойство innerHTML как отдельное действие, вызывая эту функцию для получения нового значения. Затем они получают полезную функцию, которая может использоваться для установки любого элемента, а не только обновления одного. –

0

С помощью JQuery вы можете сделать это, как показано ниже:

Demo: Код https://jsfiddle.net/cxow8198/3/

<input type="text" id="input"> 

<script> 
//usage 
$("input").keyup(function() { 
    toUpper(this); 
}); 

//function 
function toUpper(obj) { 
    var mystring = obj.value; 
    var sp = mystring.split(' '); 
    var wl=0; 
    var f ,r; 
    var word = new Array(); 
    for (i = 0 ; i < sp.length ; i ++) { 
     f = sp[i].substring(0,1).toUpperCase(); 
     r = sp[i].substring(1).toLowerCase(); 
     word[i] = f+r; 
    } 
    newstring = word.join(' '); 
    obj.value = newstring; 
    return true; 
} 
</script> 

запроса сниппет, чтобы капиталы первая буква каждого слова в строке. Это можно использовать, чтобы пользователи не могли вводить все кепки для заголовков или текста при вводе данных в формы. Надеюсь, это поможет ...

Смежные вопросы