GVKun编程网logo

对于想了解使用Javascript使标签动态化的读者,本文将提供新的信息,我们将详细介绍js动态创建标签,并且为您提供关于IE8中使用javascript动态加载CSS的解决方法_javascript

对于想了解使用 Javascript 使 标签动态化的读者,本文将提供新的信息,我们将详细介绍js动态创建标签,并且为您提供关于IE8中使用javascript动态加载CSS的解决方法_javascript技巧、javascript asp教程第四课 同时使用vbscript和javascript、JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧、javascript – 如何使我的列动态化为HTML的有价值信息。

本文目录一览:

使用 Javascript 使 <a> 标签动态化(js动态创建标签)

使用 Javascript 使 标签动态化(js动态创建标签)

如何解决使用 Javascript 使 <a> 标签动态化?

目前我的视图有一个包含 2 个链接的 div 标签,一个用于显示英文页面,一个用于阿拉伯文。现在我想要它,如果页面已经是英文的,这应该只显示阿拉伯语 <a> 标签,如果页面是阿拉伯语,它应该只显示英文 <a> 标签。代码如下:

layout.js:-

export default function Layout({ children,lang,screenName,roomName,postTitle,screenNames,postTitles }) {  

var homeUrl = ''/'' + lang + "/post/" + encodeURIComponent(roomName) + "/" + encodeURIComponent(screenName) + "/";

  if (postTitle) {//Means url to be set for post screen
    var englishUrl = ''/'' + ''EN'' + "/post/" + encodeURIComponent(roomName) + "/" + encodeURIComponent(screenNames.EN) + "/" + encodeURIComponent(postTitles.EN);
    var arabicUrl = ''/'' + ''AR'' + "/post/" + encodeURIComponent(roomName) + "/" + encodeURIComponent(screenNames.AR) + "/" + encodeURIComponent(postTitles.AR);
  } else {//Means url to be set for screens screen
    var englishUrl = ''/'' + ''EN'' + "/post/" + encodeURIComponent(roomName) + "/" + encodeURIComponent(screenNames.EN) + "/";
    var arabicUrl = ''/'' + ''AR'' + "/post/" + encodeURIComponent(roomName) + "/" + encodeURIComponent(screenNames.AR) + "/";
  }
  if (lang.toupperCase() == ''EN'') {
    if (typeof window !== ''undefined'') {
      document.documentElement.dir = ''ltr''
    }
  } else {
    if (typeof window !== ''undefined'') {
      document.documentElement.dir = ''rtl''
    }
  }
  return (
<div className={lang.toupperCase() == ''EN''?styles.roundedCornersBox:styles.roundedCornersBoxAR}>
        <a className={styles.urlNodecoration} href={englishUrl}><span className={styles.engname}>English</span></a>
        &nbsp;<span className={styles.barcolor}>|</span>            &nbsp;
        <a className={styles.urlNodecoration} href={arabicUrl}><span className={styles.arname}>العربية</span> </a>
</div>

解决方法

我通过在 div 标签中添加 react if 语句得到了答案。代码如下:

<div>{lang.toUpperCase() == ''EN'' ?<a className={styles.urlNoDecoration} href={arabicUrl}><span className={styles.engname}>العربية</span></a>
        :<a className={styles.urlNoDecoration} href={englishUrl}><span className={styles.arname}>English</span> </a>}</div>    

IE8中使用javascript动态加载CSS的解决方法_javascript技巧

IE8中使用javascript动态加载CSS的解决方法_javascript技巧

众所周知做前端开发的都恨不得踹IE开发者几脚,IE开发者名声之差不低于GFW开发者,昧着良心搞坏市场,人人得而诛之,但是在中国这些地方市场占有率摆在那里,没办法只能向现实低头。

最近我们产品需要在浏览器里动态载入一段CSS,以前的代码是直接用的:

复制代码 代码如下:

var bubbleCss = document.createElement(''style'');
bubbleCss.type = ''text/css'';
bubbleCss.innerHTML = blc_conf.bubbleStyle;
document.getElementsByTagName(''head'')[0].appendChild(bubbleCss);

不过这个只有IE9支持,在IE8下会出问题,一直也没注意到这块,直到最近重构后做完整测试的时候才发现。
网上搜到一个技巧,试过,可行,但是有一些问题
复制代码 代码如下:

window.bc_bubble_css = blc_conf.bubbleStyle;
document.createStyleSheet("javascript:bc_bubble_css");

这里可以创建由变量bc_bubble_css定义的样式,不过由于HTML5逐渐普及,我们的css里也混入了一些css3 selector,使用这个方法会导致IE8的parser解析到css3 selector的时候抛异常并停止解析后续css,这让css只加载了一半,网上搜到的办法都是用StyleSheet类型的addRule来增加,不过这个需要自己指定css2 selector以及样式,
因此需要从CSS中拆开单个的规则,然后依次调用addRule,例子:
复制代码 代码如下:

var s = document.createStyleSheet();
var rules = blc_conf.bubbleStyle.replace(/\/\*[^\*]*\*\//g, "").replace(/@[^{]*\{/g, '''').match(/[^\{\}]+\{[^\}]+\}/g);
for(var i = 0; i     var m = rules[i].match(/(.*)\s*\{\s*(.*)\}/);
    if(m) {
        try {
            s.addRule(m[1], m[2]);
        } catch(e) {
        }
    }
}

开头有两个替换,分别去掉注视和部分css3 的selector,不过依然有漏网的selector,需要在后面try catch 捉一下。

另外再次鄙视设计IE接口的人

javascript asp教程第四课 同时使用vbscript和javascript

javascript asp教程第四课 同时使用vbscript和javascript

开始:
你能让javascript和vbscript实现从同一个表格里传出音乐。看看下面的脚本:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

RUNAT:
让我们将它从头到尾的分解开来。下面所列是一个简单而独立的javascript:

要不是那个不起眼的RUNAT="Server",它看起来就是一个你可能在客户端看到的简单的javascript。
RUNAT属性告诉服务器在服务器端执行它,因此客户端永远都看不到它的。你也可以将属性设置为RUNAT="client",这样就可以跳过服务器端,直接在客户端执行了。
顺便说一句, 不能放置在asp标签内。
看看下面的vbscript:
Function VBGreeting()
VBGreeting="Greetings from a VBScript Function"
End Function
这个vbscript实现了和javascript同样的功能。它并没有什么特别之处。
然而,下面的vbscript还是有一些特别之处的。
Function toDollars(x)
toDollars=FormatCurrency(x)
End Function
引用:
上面的函数回从javascript中获得一个参数。然后他会给javascript返回一个最合适的值。让我们来看看Function toDollars(x)是如何被引用的。
function add(x,y)
{
result = x + y;
result = toDollars(result);
return result; 
}
函数add(x,y) 是一个javascript函数。从函数的中间可以看到
result = toDollars(result);
上面的一行实际上是vbscript对javascript的一个调用。
警告:
作为一个警告。当你创建带有RUNAT属性的脚本的时候,你实际上在安排它的执行顺序。我并不会深入的去讲解这个问题,因为执行的顺序是根据形势而定的。
下面是我将要深入讲解的:只对函数使用RUNAT属性(还有那些在函数内调用的全局变量)。不要将最顶层的代码放在它里面,因为你不能保证顶层代码会因为使用这个技巧而改变执行顺序。

本节原文及范例地址:http://aspjavascript.com/lesson04.asp
原文作者:James Clark 翻译:huahua 转载请注明
您可能感兴趣的文章:

JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧

JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧

先来看看现象:

复制代码 代码如下:



apply_and_call







当单击DIV后,弹出框显示undefined。
原因是当DOM对象响应单击事件后,事件方法中的this关键字指向的是DOM对象,此时DOM对象没有a属性,所以弹出undefined。
而程序员本意是响应事件方法中this指向的是classA的对象a,如何才能达到此目的?这就需要使用到call或apply方法。
下面再来熟悉下call方法:
摘要:
function.call(thisobj, args…)
参数:
thisobj
  调用function的对象。在函数主体中,thisobj是关键字this的值。
args…
  任意多个参数,这些参数将传递给函数function。
返回值:
调用函数function的返回值。
抛出:
TypeError
  如果调用该函数的对象不是函数,则抛出该异常。
描述:
call()将指定的函数function作为对象thisobj的方法来调用,把参数列表中thisobj后的参数传递给它,返回值是调用函数后的返回值。在函数体内,关键字this引用thisobj对象。
如果将指定数组作为传递给函数的参数,请使用Function.apply()方法。
熟悉call()方法后,将代码1修改如下:
代码2:
复制代码 代码如下:



apply_and_call







代码2 25行:主要添加了createDele方法,该方法包含三个参数:fun、obj、arg,分别是“要执行的方法”、“fun中this需要指向的对象”、“传入fun中的参数”。该方法返回一个匿名方法。
匿名方法负责执行fun方法,同时将fun中的this指向obj,并使用作为arg传入参数,处理结果返回。
当程序执行走到第15行调用createDele方法,传入对象的方法和对象本身,createDele接收参数后返回一个匿名方法,this.clickDele被设置成为返回的匿名方法,16行代码将this.clickDele(匿名方法)绑定到DOM事件上,程序执行完毕,点击DOM(DIV)触发匿名方法,些时匿名方法中fun为之前传入的this.click(即:方法a.click),obj为之前传入的this(即:对象a),所以此时使用call方法使得this.click(即:方法a.click)中的this指向obj(即:对象a),最终弹出结果为1。结果正确,达到了程序的本意。
回顾匿名方法多少会让人感到有些怪异:调用匿名方法时fun为什么会是this.click(即:方法a.click)、obj什么为是this(即:对象a)。这个问题就需要用JavaScript的闭包来解释了,这里暂不介绍闭包,后面会有介绍JavaScript闭包的文章发表,欢迎有兴趣的朋友持续关注!
不管各位看官信还是不信,反正道理和程序是没有问题的!:)

javascript – 如何使我的列动态化为HTML

javascript – 如何使我的列动态化为HTML

我有一个包含2列的表,如示例所示,

当表重新调整大小(即宽度减小)时,如何使td 2定位在td 1以下而不是并排显示?

最佳答案
对于当前代码,您可以使用媒体查询来定位宽度,并将td的显示模式设置为block

但我建议不要使用表进行动态重新排序,因为表中各行的更多数据会使其难以管理

@media (max-width: 768px) {
  td {
    display: block;
  }
}
table,td {
  border: 1px solid gray;
}
td {
  width: 100px;
}

今天关于使用 Javascript 使 标签动态化js动态创建标签的讲解已经结束,谢谢您的阅读,如果想了解更多关于IE8中使用javascript动态加载CSS的解决方法_javascript技巧、javascript asp教程第四课 同时使用vbscript和javascript、JavaScript call apply使用 JavaScript对象的方法绑定到DOM事件后this指向问题_javascript技巧、javascript – 如何使我的列动态化为HTML的相关知识,请在本站搜索。

本文标签:

上一篇我已将对象数组传递给

  • "value" 属性,然后将该数组附加到状态,但未呈现为 html

    下一篇javascript 中是否有类似于 Python 的实现 .__contains__() 的 .contains 方法? - 节点.js