Js基础算法有哪些
发布时间:2025-05-24 22:45:07 发布人:远客网络
一、Js基础算法有哪些
这次给大家带来Js基础算法有哪些,使用Js基础算法的注意事项有哪些,下面就是实战案例,一起来看一下。
A:一个素数只能被它自己和1整除。所以,我将运行一个while循环并加1。(看代码示例,如果你无法理解,那这不是你的菜。先回去学习javaScript基础知识然后再回来吧。)
isPrime(237);//= falseQ:你能做得更好吗?
A:可以。除数一次增加1个。在3之后我可以增加2.如果一个数可以被任何偶数整除,它将被2整除。
补充:如果你不需要把除数增加到这个数。你可以更早停止。让我在下面的步骤中解释一下(如果需要可以多读几遍)
第一步,任何数字都不能被大于它的一半的数字整除。例如,13将永远不能被7,8,9整除??它甚至可以是偶数的一半。例如,16将被8整除,但永远不会被9,10,11,12??
结论:一个数字将永远不能被一个大于其一半数值的数字整除。所以,我们可以少循环50%。
第二步,现在,如果一个数字不能被3整除。(如果它可被3整除,那么它就不是质数)。然后,它不可以被大于其值1/3的任何数整除。例如,35不能被3整除。因此,它永远不会被大于35/3的数整除,永远不能被12, 13, 14整除?如果你取一个像36一样的偶数,它将永远不能被13, 14, 15整除。
结论:一个数字可以被其数值的三分之一整除。
第三步,例如,你有一个数字127。127不能被2整除,因此你最多应该检查63.5。其次,127不能被3整除。因此,您将检查到127/3大约42。它不能被5整除,除数应该小于127/5大约25,而不是7。那么,我们该在哪里停下来?
结论:除数将小于math.sqrt(N)
如果你不能理解也不用担心,别管它。如果那你不是一个研究人员就没关系。
isPrime(237);//= false素数因子
Q:如何求出一个数的所有素数因子?
A:执行一个while循环。开始除以2,如果不能整除,记录这个除数,直到完成。
primeFactors(69);//= [3, 23]Q:运行时间复杂度是多少?你能做得更好吗?
A:O(n)。可以将除数从3开始,累加2。因为,如果一个数被任何偶数整除,它将被2整除。因此,你不需要除以偶数。此外,你不会有一个大于其价值一半的因素。如果你想让它变得复杂,那就用第一题的补充概念吧。
Q:如何获得第n个斐波纳契数字?
A:我创建一个数组并从迭代开始。
斐波那契系列是面向初学者的最受欢迎的面试问题之一。所以,你必须学习这一个。
fibo[i]= fibo[i-1]+fibo[i-2];
fibonacci(12);//= 144Q:运行时间复杂度是多少?
return fibonacci(n-1)+ fibonacci(n-2);
fibonacci(12);//= 144Q:运行时间复杂度是多少?
A: O(2n);关于时间复杂度的细节
Q:你会如何找到两个数字的最大公约数?
function greatestCommonpisor(a, b){
//if u pass a-ve number this will not work. fix it dude!!
while(a>= pisor&& b>= pisor){
if(a%pisor== 0&& b% pisor==0){
greatestCommonpisor(14, 21);// 7
greatestCommonpisor(69, 169);//= 1算法范式
很抱歉。我也无法解释它。因为我自己80%的情况下都不能理解它。我的算法分析教练告诉我这个,又从课堂笔记偷走(我是一个好学生,顺便说一句!)
function greatestCommonpisor(a, b){
return greatestCommonpisor(b, a%b);
Q:你将如何从数组中删除重复的成员?
A:执行一个循环,并保存一个对象/关联数组。如果我第一次找到一个元素,我会设置它的值为真(这将告诉我元素添加一次)。如果我在对象中找到这个元素,我不会将它插入到返回数组中。
function removeDuplicate(arr){
for(var i=0; i<arr.length; i++){
removeDuplicate([1,3,3,3,1,5,6,7,8,1]);//= [1, 3, 5, 6, 7, 8]合并两个排序的数组
A:我将为每个数组保留一个指针(看代码,并注意这个)。
function mergeSortedArray(a, b){
if aElm or bElm exists we will insert to merged array
to insert: aElm exists and bElm doesn't exists
or both exists and aElm< bElm
this is the critical part of the example
if((aElm&&!bElm)|| aElm< bElm){
mergeSortedArray([2,5,6,9], [1,2,3,29]);//= [1, 2, 2, 3, 5, 6, 9, 29]不通过临时变量交换两个数的值
Q:如何在不使用临时变量的情况下交换两个数字?
console.log('before swap:','a:', a,'b:', b);
console.log('after swap:','a:', a,'b:', b);
//= after swap: a: 3 b: 2位操作:对不起,我无法向你解释这一点。 Kinjal Dave建议到 logical conjunction理解它。将浪费您30分钟。
console.log("a:"+ a+" and b:"+ b);
console.log("a:"+ a+" and b:"+ b);
Q:如何在JavaScript中反转字符串?
A:可以遍历字符串并将字母连接到新字符串。
for(var i= str.length-1; i>=0;i--){
reverse('you are a nice dude');
//="edud ecin a era uoy"Q:你知道在现代浏览器中串联效果很好,但在像IE8这样的旧浏览器中会变慢。还有什么不同的方法,可以扭转一个字符串?
A:当然.我可以使用数组,也可以添加一些检查。如果字符串是NULL或其他字符串,这将失败。让我也做一些类型检查。使用此数组类似于在某些服务器端语言中使用字符串缓冲区。
if(!str|| typeof str!='string'|| str.length< 2) return str;
for(var i= str.length-1; i>=0;i--){
return rtnStr.join('');
A:我可以遍历索引的一半,它会节省一点点。(这是没用的,可能不会打动面试官)
halfIndex= Math.floor(len/ 2)- 1,
for(var i= 0; i<= halfIndex; i++){
}Q:这有效,但你可以做递归的方式吗?
return reverse(str.substr(1))+ str.charAt(0);
Q:你可以在方法中使用任何构建,使它更清洁吗?
if(!str|| str.length<2) return str;
return str.split('').reverse().join('');
Q:你可以做反向函数作为字符串扩展吗?
A:我需要将这个函数添加到String.prototype,而不是使用str作为参数,我需要使用this
String.prototype.reverse= function(){
if(!this|| this.length<2) return this;
return this.split('').reverse().join('');
A:您必须检查整个字符串的空白区域。确定是否可能有多个空格。
for(var i= str.length-1; i>=0; i--){
if(str[i]==''|| i==0){
rev.push(str.substr(i,wordLen+1));
return str.split('').reverse();
Q:如果你有一个字符串如”I am the good boy”,怎样变为“I ma eht doog yob”?注意这些单词位置不变但是被反转了。
A:要做到这一点,我必须做字符串反向和字反转。
return str.split('').reverse().join('').split('').reverse().join('');
reverseInPlace('I am the good boy');//="I ma eht doog yob"Q: ok。好的,你能不使用内置反向函数做到吗?
//you can simply split words by''
//and for each words, call reverse function
//put reverse in a separate function
//have a glass of water, and sleep第一个非重复字符
Q:怎么在字符串中找到第一个非重复字符?
A:例如,如果它是一个非常长的字符串,说一百万个字符,我想检查是否有26个英文字符正在重复。我可能会检查是否所有字符都在每200个字母中重复(例如),而不是循环遍历整个字符串。这将节省计算时间。
Q:简单起见,这个字符串是“the quick brown fox jumps then quickly blow air”。
function firstNonRepeatChar(str){
firstNonRepeatChar('the quick brown fox jumps then quickly blow air');//="f"这有一个问题,不能再循环中及时退出。
Q:怎样删除字符串中的重复字符?
A:这与第一个非重复字符非常相似。你应该问一些类似的问题。它是区分大小写的吗?。
如果面试官说,这是区分大小写的,那么你就很轻松了。如果他说不。你可以使用string.toLowercase()来把字符串。面试官可能不喜欢这个方法。因为返回字符串不会拥有相同的大小写。所以
function removeDuplicateChar(str){
return newStr.join('');
removeDuplicateChar('Learn more javascript dude');//="Lnmojvsciptu"回文检查
Q:如何检查一个字符串是否是回文?
A:把字符串反转,如果反转前后相等,那么它就是回文。
isPalindrome('toyota')
return str== str.split('').reverse().join('');
}类似的:在 O(n)时间复杂度内判断一个字符串是否包含在回文字符串内。你能在O(1)时间解决问题吗?
Q:在一个1到100的未排序数组中找到缺失的数,你怎么做?
说明:数组中的数字为1到100。数组中只有一个数字缺
二、JS实现数组随机排序的三种方法详解
实现数组随机排序的方法有很多,本文将详细介绍其中三种:
1.利用数组方法sort实现随机排序。
1.利用数组方法sort实现随机排序,使用for循环或Lodash等三方js方法库也能实现,但sort方法使用起来更加方便。sort方法的缺点是不够随机,因为它会利用一个比较器进行两两比较。示例代码:
2.洗牌算法实现随机排序,从原始数组中每次随机选中一个元素,然后放入新数组中,每取出一个元素后,将它从原数组中取出。示例代码:
random= Math.floor(Math.random()*array.length);
console.log(shuffle([1,2,3,4,5]));
3.洗牌算法深入分析,思路是从一副牌中随机抽取牌,旧的牌数量相应减少。示例代码:
function shuffle(m)//洗牌//抽牌法
//每次抽出一张牌,需要遍历整个数组,所以很耗时。
var rnd= Math.floor(Math.random()*i);
该方法耗时较长,因为删除数组中间的某个元素会导致后面的数据被执行。为了解决这个问题,可以将最后一张未抽的牌放在抽走的位置上。示例代码:
function shuffle_pick(m)//洗牌//抽牌法优化牌
//每次抽出一张牌,放在另一堆。把最后一张未抽的牌放在空位子上。
var rnd= Math.floor(Math.random()*i);
除了抽牌思路,还可以用换牌思路:随机交换两个位置,共交换n次,n越大,越接近随机。示例代码:
function shuffle_swap(m)//洗牌//换牌法
//第i张与任意一张牌换位子,换完一轮即可
var rnd= Math.floor(Math.random()*(i+1)),temp= arr[rnd];
除了抽牌与换牌的思路,还可以用插牌的思路:先有一张牌,第二张牌有两个位置可随机插入,第三张牌有三个位置可随机插入,依此类推。示例代码:
function shuffle_insert_1(m)//洗牌//插牌法
//每次生成一张最大的牌,插在随机的某张牌前。
//因为要在数组里插入元素,把后面的所有元素向后挤一位,所以很耗时。
arr.splice(Math.floor(Math.random()*(i+1)),0,i);
该方法会随着牌数的增多变得越来越困难,因为插牌会导致后面的很多牌都往后推一步。优化方法是先有n-1张牌,第n张牌放在最后,然后与任意一张牌互换位置。示例代码:
function shuffle_insert(m)//洗牌//插牌法优化版,可以用数学归纳法证明,这种洗牌是均匀的。
//每次生成一张最大的牌,与随机的某张牌换位子
var rnd= Math.floor(Math.random()*(i+1));
三、JS自带有几种方法
1:<script language=”JavaScript”>
1:<script language=”JavaScript”>
在不支持JavaScript的浏览器中将不执行相关代码
2: Hello to the non-JavaScript browser.
1:<script language=”JavaScript” src="”filename.js"”></script>
2: document.write(“Hello”);// This is a comment
1: document.write(“<strong>Hello</strong>”);
1: var myVariable=“some value”;
1: var myString=“String1”+“String2”;
1:<script language=”JavaScript”>
3: var myVariable=“Hello there”;
4: var therePlace= myVariable.search(“there”);
5: document.write(therePlace);
1: thisVar.replace(“Monday”,”Friday”);
1:<script language=”JavaScript”>
3: var myVariable=“Hello there”;
4: document.write(myVariable.big()+“<br>”);
5: document.write(myVariable.blink()+“<br>”);
6: document.write(myVariable.bold()+“<br>”);
7: document.write(myVariable.fixed()+“<br>”);
8: document.write(myVariable.fontcolor(“red”)+“<br>”);
9: document.write(myVariable.fontsize(“18pt”)+“<br>”);
10: document.write(myVariable.italics()+“<br>”);
11: document.write(myVariable.small()+“<br>”);
12: document.write(myVariable.strike()+“<br>”);
13: document.write(myVariable.sub()+“<br>”);
14: document.write(myVariable.sup()+“<br>”);
15: document.write(myVariable.toLowerCase()+“<br>”);
16: document.write(myVariable.toUpperCase()+“<br>”);
18: var firstString=“My String”;
19: var finalString= firstString.bold().toLowerCase().fontcolor(“red”);
1:<script language=”JavaScript”>
4: myArray[0]=“First Entry”;
5: myArray[1]=“Second Entry”;
6: myArray[2]=“Third Entry”;
7: myArray[3]=“Fourth Entry”;
8: myArray[4]=“Fifth Entry”;
9: var anotherArray= new Array(“First Entry”,”Second Entry”,”Third Entry”,”Fourth Entry”,”Fifth Entry”);
1:<script language=”JavaScript”>
9: document.write(myArray.sort());
1:<script language=”JavaScript”>
3: var myVariable=“a,b,c,d”;
4: var stringArray= myVariable.split(“,”);
5: document.write(stringArray[0]);
6: document.write(stringArray[1]);
7: document.write(stringArray[2]);
8: document.write(stringArray[3]);
1:<script language=”JavaScript”>
1:<script language=”JavaScript”>
3: var result= window.confirm(“Click OK to continue”);
1:<script language=”JavaScript”>
3: function multiple(number1,number2){
4: var result= number1* number2;
1:<a href=”#” onClick=”functionName()”>Link text</a>
2:<a href="/”javascript:functionName"()”>Link text</a>
1:<body onLoad=”functionName();”>
3: var userChoice= window.confirm(“Choose OK or Cancel”);
4: var result=(userChoice== true)?“OK”:“Cancel”;
7: for(i= 0; i< myArray.length; i++){
8: document.write(myArray[i]+“<br>”);
6: window.setTimeout(“hello()”,5000);
5: window.setTimeout(“hello()”,5000);
7: window.setTimeout(“hello()”,5000);
6: var myTimeout= window.setTimeout(“hello()”,5000);
7: window.clearTimeout(myTimeout);
1:<body onUnload=”functionName();”>
JavaScript就这么回事2:浏览器输出
1:<script language=”JavaScript”>
1:<script language=”JavaScript”>
2: document.write(“<p>Here’s some information about this document:</p>”);
3: document.write(“<ul>”);
4: document.write(“<li>Referring Document:“+ document.referrer+“</li>”);
5: document.write(“<li>Domain:“+ document.domain+“</li>”);
6: document.write(“<li>URL:“+ document.URL+“</li>”);
7: document.write(“</ul>”);
1: document.writeln(“<strong>a</strong>”);
1:<script language=”JavaScript”>
3: document.write(thisDate.toString());
1:<script language=”JavaScript”>
3: var currentDate= new Date();
4: var userOffset= currentDate.getTimezoneOffset()/60;
5: var timeZoneDifference= userOffset- myOffset;
6: currentDate.setHours(currentDate.getHours()+ timeZoneDifference);
7: document.write(“The time and date in Central Europe is:“+ currentDate.toLocaleString());
1:<script language=”JavaScript”>
3: var thisTimeString= thisDate.getHours()+“:”+ thisDate.getMinutes();
4: var thisDateString= thisDate.getFullYear()+“/”+ thisDate.getMonth()+“/”+ thisDate.getDate();
5: document.write(thisTimeString+“ on“+ thisDateString);
1:<script language=”JavaScript”>
2: var urlParts= document.URL.split(“?”);
3: var parameterParts= urlParts[1].split(“&”);
4: for(i= 0; i< parameterParts.length; i++){
5: var pairParts= parameterParts[i].split(“=”);
6: var pairName= pairParts[0];
7: var pairValue= pairParts[1];
8: document.write(pairName+“:“+pairValue);
1:<script language=”JavaScript”>
4: document.write(“<p>This is a New Document.</p>”);
1:<script language=”JavaScript”>
2: window.location=“”;
3:<script language='javaScript'>
4: var placeHolder= window.open('holder.html','placeholder','width=200,height=200');
6:<title>The Main Page</title>
8:<body onLoad='placeHolder.close()'>
9:<p>This is the main page</p>
1:<img src="”image1.jpg"” name=”myImage”>
2:<a href=”#” onClick=”window.alert(document.myImage.width)”>Width</a>
1:<script language=”JavaScript”>
3: myImage.src=“Tellers1.jpg”;
1:<script language=”JavaScript”>
3: rollImage.src=“rollImage1.jpg”;
5: defaultImage.src=“image1.jpg”;
7:<a href="/”myUrl"” onMouseOver=”document.myImage.src= rollImage.src;”
8: onMouseOut=”document.myImage.src= defaultImage.src;”>
9:<img src="”image1.jpg"” name=”myImage” width=100 height=100 border=0>
1:<script language=”JavaScript”>
3: imageList[0]=“image1.jpg”;
4: imageList[1]=“image2.jpg”;
5: imageList[2]=“image3.jpg”;
6: imageList[3]=“image4.jpg”;
7: var imageChoice= Math.floor(Math.random()* imageList.length);
8: document.write(‘<img src=”’+ imageList[imageChoice]+‘“>’);
1:<script language=”JavaScript”>
4: function createRollOver(originalImage,replacementImage){
6: imageArray[source]= new Image;
7: imageArray[source].src= originalImage;
8: imageArray[replacement]= new Image;
9: imageArray[replacement].src= replacementImage;
12: var rollImage1= createRollOver(“image1.jpg”,”rollImage1.jpg”);
14:<a href=”#” onMouseOver=”document.myImage1.src= rollImage1[replacement].src;”
15: onMouseOut=”document.myImage1.src= rollImage1[source].src;”>
16:<img src="”image1.jpg"” width=100 name=”myImage1” border=0>
1:<script language=”JavaScript”>
4: imageList[0].src=“image1.jpg”;
6: imageList[1].src=“image2.jpg”;
8: imageList[2].src=“image3.jpg”;
10: imageList[3].src=“image4.jpg”;
11: function slideShow(imageNumber){
12: document.slideShow.src= imageList[imageNumber].src;
14: if(imageNumber< imageList.length){
15: window.setTimeout(“slideShow(“+ imageNumber+“)”,3000);
20:<body onLoad=”slideShow(0)”>
21:<img src="”image1.jpg"” width=100 name=”slideShow”>
1:<script language=”JavaScript”>
3: imageList[0]=“image1.jpg”;
4: imageList[1]=“image2.jpg”;
5: imageList[2]=“image3.jpg”;
6: imageList[3]=“image4.jpg”;
8: urlList[0]=“”;
9: urlList[1]=“”;
10: urlList[2]=“”;
11: urlList[3]=“”;
12: var imageChoice= Math.floor(Math.random()* imageList.length);
13: document.write(‘<a href=”’+ urlList[imageChoice]+‘“><img src=”’+ imageList[imageChoice]+‘“></a>’);
还是先继续写完JS就这么回事系列吧~
1:<form method=”post” action=”target.html” name=”thisForm”>
2:<input type=”text” name=”myText”>
3:<select name=”mySelect”>
4:<option value=”1”>First Choice</option>
5:<option value=”2”>Second Choice</option>
8:<input type=”submit” value=”Submit Me”>
1:<form name=”myForm”>
2:<input type=”text” name=”myText”>
4:<a href='#' onClick='window.alert(document.myForm.myText.value);'>Check Text Field</a>
1:<form name=”myForm”>
2: Enter some Text:<input type=”text” name=”myText”><br>
3: Copy Text:<input type=”text” name=”copyText”>
5:<a href=”#” onClick=”document.myForm.copyText.value=
6: document.myForm.myText.value;”>Copy Text Field</a>
1:<form name=”myForm”>
2: Enter some Text:<input type=”text” name=”myText” onChange=”alert(this.value);”>
1:<form name=”myForm”>
2:<select name=”mySelect”>
3:<option value=”First Choice”>1</option>
4:<option value=”Second Choice”>2</option>
5:<option value=”Third Choice”>3</option>
8:<a href='#' onClick='alert(document.myForm.mySelect.value);'>Check Selection List</a>
1:<form name=”myForm”>
2:<select name=”mySelect”>
3:<option value=”First Choice”>1</option>
4:<option value=”Second Choice”>2</option>
7:<script language=”JavaScript”>
8: document.myForm.mySelect.length++;
9: document.myForm.mySelect.options[document.myForm.mySelect.length- 1].text=“3”;
10: document.myForm.mySelect.options[document.myForm.mySelect.length- 1].value=“Third Choice”;
1:<script language=”JavaScript”>
2: function checkField(field){
4: window.alert(“You must enter a value in the field”);
9:<form name=”myForm” action=”target.html”>
10: Text Field:<input type=”text” name=”myField”onBlur=”checkField(this)”>
11:<br><input type=”submit”>
1: function checkList(selection){
3: window.alert(“You must make a selection from the list.”);
1:<form name=”myForm” action=”login.html”>
2: Username:<input type=”text” name=”username”><br>
3: Password:<input type=”password” name=”password”><br>
4:<input type=”button” value=”Login” onClick=”this.form.submit();”>
5:<input type=”button” value=”Register” onClick=”this.form.action=‘register.html’; this.form.submit();”>
6:<input type=”button” value=”Retrieve Password” onClick=”this.form.action=‘password.html’; this.form.submit();”>
1:<form name=”myForm” action=”login.html”>
2: Username:<input type=”text” name=”username”><br>
3: Password:<input type=”password”name=”password”><br>
4:<input type=”image” src="”login.gif"” value=”Login”>
1:<SCRIPT LANGUAGE='JavaScript'>
5: for(i=0; i< item.length; i++){
6: newItem+= item.charCodeAt(i)+'.';
10: function encryptForm(myForm){
11: for(i=0; i< myForm.elements.length; i++){
12: myForm.elements[i].value= encrypt(myForm.elements[i].value);
18:<form name='myForm' onSubmit='encryptForm(this); window.alert(this.myField.value);'>
19: Enter Some Text:<input type=text name=myField><input type=submit>
JavaScript就这么回事5:窗口和框架
1:<script language=”JavaScript”>
2: window.status=“A new status message”;
1:<script language=”JavaScript”>
2: var userChoice= window.confirm(“Click OK or Cancel”);
4: document.write(“You chose OK”);
6: document.write(“You chose Cancel”);
1:<script language=”JavaScript”>
2: var userName= window.prompt(“Please Enter Your Name”,”Enter Your Name Here”);
3: document.write(“Your Name is“+ userName);
1://打开一个名称为myNewWindow的浏览器新窗口
2:<script language=”JavaScript”>
3: window.open(“”,”myNewWindow”);
1:<script language=”JavaScript”>
2: window.open(“”,”myNewWindow”,'height=300,width=300');
1:<script language=”JavaScript”>
2: window.open(“”,”myNewWindow”,'height=300,width=300,left=200,screenX=200,top=100,screenY=100');
1:<script language=”JavaScript”>
1:<script language=”JavaScript”>
2: window.open(';);</script>
1:<a href='#' onClick='document.location='125a.html';'>Open New Document</a>
1:<script language=”JavaScript”>
2: if(document.all){//如果是IE浏览器则使用scrollTop属性
3: document.body.scrollTop= 200;
4:} else{//如果是NetScape浏览器则使用pageYOffset属性
1:<a href='#' onClick=”window.open(';);”>Open a full-screen window</a>
1:<script language=”JavaScript”>
3: var newWindow= window.open(“128a.html”,”newWindow”);
4: newWindow.close();//在父窗口中关闭打开的新窗口
1:<script language=”JavaScript”>
2: var newWindow= window.open(“”,”newWindow”);
4: newWindow.document.write(“This is a new window”);
5: newWIndow.document.close();
1:<frameset cols=”50%,*”>
2:<frame name=”frame1” src="”135a.html"”>
3:<frame name=”frame2” src="”about:blank"”>
5:在frame1中加载frame2中的页面
6: parent.frame2.document.location=“135b.html”;
如果在frame1中html文件中有个脚本
2: window.alert(“Frame 1 is loaded”);
那么在frame2中可以如此调用该方法
1:<body onLoad=”parent.frame1.doAlert();”>
可以在框架页面定义数据项,使得该数据可以被多个框架中的页面公用
1:<script language=”JavaScript”>
2: var persistentVariable=“This is a persistent value”;
4:<frameset cols=”50%,*”>
5:<frame name=”frame1” src="”138a.html"”>
6:<frame name=”frame2” src="”138b.html"”>
这样在frame1和frame2中都可以使用变量persistentVariable
根据以上的一些思路,我们可以使用一个隐藏的框架页面来作为整个框架集的代码库
1:<frameset cols=”0,50%,*”>
2:<frame name=”codeFrame” src="”140code.html"”>
3:<frame name=”frame1” src="”140a.html"”>
4:<frame name=”frame2” src="”140b.html"”>