Заменить текст вычисленным новым текстом на onclick = "myfunction ()" - PullRequest
0 голосов
/ 22 ноября 2010

У меня есть несколько форм в моем блоге.Для каждой формы я добавил кнопку преобразования, чтобы преобразовать текст в текстовой области перед кнопкой отправки.Итак, есть 3 задания: получить значение, вычислить текст, заменить старый текст новым.В кнопке html я пробовал 2 способа, ни один из них не работает:

<a onclick="myfunction()" class="button" href="javascript:void(0)">Convert</a>`

и

<a onclick="check('document.getElementsByTagName('textarea')[0].value','myfunction()')"
    class="button" href="javascript:void(0)">Convert</a>`

Во внешнем файле js у меня есть эта функция для вычисления текста:

myfunction(){
oldtext = document.getElementsByTagName('textarea')[0].value;
...calculating...
newtext= the result of calculation;
document.getElementsByTagName('textarea')[0].value = newtext;
}

Я не знаю, проблема в кнопке или в myfunction ().Пожалуйста помоги!

Ответы [ 2 ]

1 голос
/ 22 ноября 2010

Это функция для расчета текста. Может быть, что-то не хватает между функцией и кнопкой?

var vowels = new Array ("a","e","i","o","u","v","ü");
var umlatu = "ü";
var tones = new Array ("a","e","i","o","u","u","á","é","í","ó","ú","u","a", "e", "i", "o", "u", "u","à","è","ì","ò","ù","u");


function myfunction () {   

textin = document.getElementsByTagName('textarea')[0].value;
textin.toLowerCase();

currentword = "";
currentchar = "";
i = 0;
numletters = textin.length;
textout = ""; // final output
tempword = "";
usevowel = 1; // which vowel will have the tone over it
foundvowel = 0;

for (i=0; i<=numletters; i++) {
currentchar = textin.charAt (i);
currentnumvalue = currentchar - 1;

// numbers 1-5 are tone marks, build the word until we hit one
if ( !(currentchar.match(/[1-5]/)) ) {
if ( currentchar.match(/[aeiouvü]/)) foundvowel++;
// if the last character was a vowel and this isn't...
if ( ((foundvowel != 0))  && (currentchar.match(/[^aeiouvüngr]/))  || (currentchar == "")) {
textout = textout + currentword;
currentword = currentchar;
}

else {
currentword = currentword + currentchar;
}
}// if !match 1-5
// the character must be a tone mark
else {

tempword=""; // the word being built in this loop
foundvowel = 0; // number of vowels found in the word
usevowel = 1; // which vowel (1st or 2nd) will get the tone mark

// step through each character in word
wordlen = currentword.length;
// If it doesn't have letters, just output it
if ( !(currentword.match(/[a-zü]/)) ) {
    textout = textout + currentword + currentchar; 
    currentword = "";
}
// the tone goes over the second vowel for these combinations
if ( currentword.match(/i[aeou]/) ) usevowel = 2;
if ( currentword.match(/u[aeio]/) ) usevowel = 2;
if ( currentword.match(/[vü]e/) ) usevowel = 2;

// We'll check either the first or the first two vowels, depending on which should have the tone
for (j=0; (j<=wordlen) && (foundvowel<usevowel); j++) {
// Check to see if the character is a vowel
for (vowelnum=0; vowelnum<7; vowelnum++) {

if (currentword.charAt (j) == vowels [ vowelnum ]) {
// It's a vowel - convert to corresponding numbered tone character from tones array
// If tone is 5th (Neutral tone) - Leave it as the normal vowel

if (currentnumvalue<=3) {
if (vowelnum == 6) currentchar = tones [5 + (currentnumvalue *6)]; // Handle the damned ü for Europeans who can input it directly
else currentchar = tones [ vowelnum + (currentnumvalue * 6)];
}

else {
if (vowelnum == 5) currentchar = umlatu; //neutral tone umlat
else currentchar = vowels [ vowelnum ]; //all other neutral tones
}

foundvowel++; // Increment the counter for vowels found in the word

if (foundvowel>=usevowel) {
// rebuild word with the tone if this vowel should have the tone

tempword="";
for (k=0; k<=wordlen; k++) {
if (k == j) {
tempword = tempword + currentchar;
}

else { //just copy from the input, but turn all remaining v's into umlated u's
if (currentword.charAt(k) == vowels[5]) tempword = tempword + umlatu;
else tempword = tempword + currentword.charAt(k);
}
}
currentword="";
}
}
}
textout = textout + tempword;
} // else -deal with numbers

}
}

// rough check
if (textout=="") alert ('That was not valid input\nCheck http://www.romanization.com to learn about pinyin');
else {
document.getElementsByTagName('textarea')[0].value = textout;
}
}
0 голосов
/ 22 ноября 2010

используйте innerHTML вместо значения

oldtext = document.getElementsByTagName('textarea')[0].value;

до

oldtext = document.getElementsByTagName('textarea')[0].innerHTML;

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...