Javascript 输入到提示框中的值需要插入到算法中,以显示用户输入标题的一定数量的变化
用户将在提示框中输入标题,然后加载函数generate_title(),并在页面上显示结果,以显示用户输入的标题的不同变体。但是,它不会在带有变体的页面上显示标题。我需要帮助。这是文件 HTML代码如下:Javascript 输入到提示框中的值需要插入到算法中,以显示用户输入标题的一定数量的变化,javascript,html,user-input,Javascript,Html,User Input,用户将在提示框中输入标题,然后加载函数generate_title(),并在页面上显示结果,以显示用户输入的标题的不同变体。但是,它不会在带有变体的页面上显示标题。我需要帮助。这是文件 HTML代码如下: <body> <h1>Title Generation Module</h1> <script> pTitle = prompt("Enter a title", "Enter your title"); if (pTitl
<body>
<h1>Title Generation Module</h1>
<script>
pTitle = prompt("Enter a title", "Enter your title");
if (pTitle == null || pTitle == " ")
{
alert("Not a vaild Title");
}
else
{
var r = confirm("Are you wanting to submit this title: "+pTitle);
if (r == true)
{
//document.write(pTitle);
generate_title();
}
else
{
location.reload();
}
}
</script>
标题生成模块
pTitle=提示(“输入标题”、“输入标题”);
如果(pTitle==null | | pTitle==“”)
{
警报(“非有效所有权”);
}
其他的
{
var r=确认(“您是否希望提交此标题:+pTitle”);
如果(r==true)
{
//文件编写(pTitle);
生成标题();
}
其他的
{
location.reload();
}
}
Javascript如下所示:
//Generate Title
var input_keywords = pTitle;
var limit_count = 1;
var max_char_per_title = 80;
var sub_library = ["for=4", "you=u", "at=@", "two=2", "with=w", "adapter=adpt", "Monokini=Mono 9"].map( function (item)
{ return item.split("=");});
function calc_length(title)
{
return (title
.join(" ") + " ")
.replace("- ", " ")
.replace("+ ", " ")
.replace("* ", " ")
.replace(" ", " ")
.replace("\" ", " ")
.replace(" \"", " ")
.length - 1;
}
function get_all_titles(keywords)
{
var result_titles = [];
for(var i = 0; i < keywords.length; i ++)
{
var word_count = keywords[i].length;
var words = keywords[i];
var previous_count = result_titles.length;
if (previous_count == 0)
{
previous_count = word_count;
for (var sub_ii = 0 ; sub_ii < word_count; sub_ii++)
{
result_titles[sub_ii] = [];
result_titles[sub_ii][i] = words[sub_ii];
}
}
else
{
for (var sub_i = 0; sub_i < word_count; sub_i++)
{
for (var sub_ii = 0 ; sub_ii < previous_count; sub_ii++)
{
if (result_titles[previous_count * sub_i + sub_ii] == undefined)
{
result_titles[previous_count * sub_i + sub_ii] = result_titles[sub_ii ].slice();
}
result_titles[previous_count * sub_i + sub_ii][i] = words[sub_i];
}
}
}
}
return result_titles;
}
function substitute(title)
{
for (var subs_idx = 0 ; subs_idx < sub_library.length; subs_idx++)
{
var index = title.indexOf(sub_library[subs_idx][0]);
if (index >= 0)
{
title[index] = sub_library[subs_idx][1];
}
}
return title;
}
function shorten_title_length(titles)
{
var result = [];
var count = 0;
for (var i = 0 ; i < titles.length; i++)
{
if (calc_length(titles[i]) > max_char_per_title)
{
//substitute with the word in library
titles[i] = substitute(titles[i]);
// still too long, remove possible words.
if (calc_length(titles[i]) > max_char_per_title)
{
var words = titles[i];
for (var word_idx = 0 ; word_idx < words.length; word_idx++)
{
if (words[word_idx].indexOf("/") == (words[word_idx].length - 1))
{
titles[i] = titles[i].splice(word_idx, 1);
}
}
titles[i] = words
}
}
if (calc_length(titles[i]) <= max_char_per_title)
{
result[count] = titles[i];
count++;
}
else
{
console.log(titles[i].join(" \ "));
}
}
return result;
}
function change_forward_position(title)
{
var words = title;
for (var word_idx = 0 ; word_idx < words.length; word_idx++)
{
if (words[word_idx][words[word_idx].length - 1] == "-")
{
if (word_idx != words.length - 1)
{
var tmp = words[word_idx];
words[word_idx] = words[word_idx + 1];
words[word_idx + 1] = tmp;
word_idx ++;
}
}
}
title = words;
return title;
}
function change_backward_position(title)
{
var words = title;
for (var word_idx = 0 ; word_idx < words.length; word_idx++)
{
if (words[word_idx][words[word_idx].length - 1] == "+")
{
if (word_idx != 0)
{
var tmp = words[word_idx];
words[word_idx] = words[word_idx - 1];
words[word_idx - 1] = tmp;
}
}
}
title = words;
return title;
}
function finalize(titles)
{
for (var title_idx = 0 ; title_idx < titles.length; title_idx++)
{
for (var word_idx = 0 ; word_idx < titles[title_idx].length; word_idx++)
{
if (titles[title_idx][word_idx][titles[title_idx][word_idx].length - 1] == '+')
titles[title_idx][word_idx] = titles[title_idx][word_idx].substring(0, titles[title_idx][word_idx].length - 1);
if (titles[title_idx][word_idx][titles[title_idx][word_idx].length - 1] == '-')
titles[title_idx][word_idx] = titles[title_idx][word_idx].substring(0, titles[title_idx][word_idx].length - 1);
if (titles[title_idx][word_idx][titles[title_idx][word_idx].length - 1] == '/')
titles[title_idx][word_idx] = titles[title_idx][word_idx].substring(0, titles[title_idx][word_idx].length - 1);
if (titles[title_idx][word_idx][titles[title_idx][word_idx].length - 1] == '"')
titles[title_idx][word_idx] = titles[title_idx][word_idx].substring(0, titles[title_idx][word_idx].length - 1);
if (titles[title_idx][word_idx][titles[title_idx][word_idx].length - 1] == '*')
titles[title_idx][word_idx] = titles[title_idx][word_idx].substring(0, titles[title_idx][word_idx].length - 1);
}
}
return titles;
}
function generate_title()
{
var all_titles = get_all_titles(pTitle);
//Check keyword files provided by the user, that optional sub words are at least 24
if (all_titles.length < limit_count)
{
alert("not enough different titles");
}
//check total char per title
all_titles = shorten_title_length(all_titles);
// substitute half randomly.
for (var i = 0 ; i < all_titles.length; i++)
{
if (Math.random() > 0.5)
{
all_titles[i] = substitute(all_titles[i]);
}
}
//changing position backward.
for (var i = 0 ; i < all_titles.length; i++)
{
if (Math.random() > 0.5)
{
all_titles[i] = change_backward_position(all_titles[i]);
}
}
//changing position forward.
for (var i = 0 ; i < all_titles.length; i++)
{
if (Math.random() > 0.5)
{
all_titles[i] = change_forward_position(all_titles[i]);
}
}
all_titles = finalize(all_titles);
// evaluate.....
for (var i = 0 ; i < all_titles.length; i++)
{
console.log(i);
console.log(all_titles[i].join(" \ "));
console.log(all_titles[i].length);
alert(pTitle);
}
}
//生成标题
var input_关键字=pTitle;
风险限额\单位计数=1;
var max_char_per_title=80;
var sub_library=[“for=4”、“you=u”、“at=@”、“two=2”、“with=w”、“adapter=adpt”、“Monokini=mono9”]。映射(函数(项)
{return item.split(“=”;});
函数计算长度(标题)
{
报税表(标题)
.join(“”+“”)
.替换(“-”,“”)
.替换(“+”,“”)
.替换(“*”,“”)
.替换(“,”)
.替换(“\”,“”)
.替换(“\”,“”)
.长度-1;
}
函数获取所有标题(关键字)
{
var结果_titles=[];
对于(var i=0;i=0)
{
标题[索引]=附属图书馆[附属图书馆idx][1];
}
}
返回标题;
}
函数缩短标题长度(标题)
{
var结果=[];
var计数=0;
对于(变量i=0;i每个标题的最大字符数)
{
//用图书馆里的单词替换
标题[i]=替代(标题[i]);
//仍然太长,请删除可能的单词。
if(计算长度(标题[i])>每个标题的最大字符数)
{
变量词=标题[i];
for(var word_idx=0;word_idx0.5)
{
所有标题[i]=更改向后位置(所有标题[i]);
}
}
//向前换位置。
对于(变量i=0;i0.5)
{
所有标题[i]=更改前向位置(所有标题[i]);
}
}
所有标题=最终确定(所有标题);
//评估。。。。。
对于(变量i=0;i
您必须更改JSFIDLE设置:您正在使用onload
选项
这会将代码包装在一个onload函数中,如下所示:
window.onload=function(){
/* Your code */
}
因为您的代码是在onload
函数中声明的,所以它们在该函数中是局部作用域。这意味着它们不能作为全局对象访问
您可以将JSFIDLE设置从
onload
更改为No wrap-in
,您的JavaScript代码将被放置在文档的
元素中,并且工作正常这将允许在提示框中输入标题的用户浏览并生成用户输入内容的不同变体标题?是的,您已经在h中单独添加了该代码