我正在使用此功能通过单击外部链接来更改div框的内容。 该功能如下所示:
<!--
function ReplaceContentInContainer(id,content) {
var container = document.getElementById(id);
container.innerHTML = content;
}
//-->
HTML是:
<li><a href="javascript:ReplaceContentInContainer('pippo','<span style="font-size: 14px; font-color:red;">pluto</span>')"> Wedding Receptions</a></li>
当我运行代码时,链接将显示如下:
冥王星&#39;)&#34;&GT;婚礼招待会
当然,如果点击它并不会更改框中的内容。 我试图从几乎每个角落调整代码。 对此事有何建议?哪里错了? 干杯 瓦尔特
答案 0 :(得分:2)
问题是由// Requires nightly compiler, since it depends on implementation details.
#![feature(raw)]
use std::any::TypeId;
use std::mem::transmute;
use std::raw::TraitObject;
macro_rules! qi {
($e:expr, $t:ty) => {
unsafe {
let iid = TypeId::of::<$t>();
let ptr = &$e;
match ptr.query_interface(&iid) {
Some(to) => {
let tmp: &$t = transmute(to);
Some(tmp)
},
None => None,
}
}
};
}
macro_rules! impl_unknown_for {
($base:ty: $($ints:ty),*) => {
unsafe impl Unknown for $base {
fn query_interface(&self, iid: &TypeId) -> Option<TraitObject> {
unsafe {
$(
if *iid == TypeId::of::<$ints>() {
let to = transmute::<&$ints, _>(self);
return Some(to);
}
)*
None
}
}
}
};
}
unsafe trait Unknown {
fn query_interface(&self, iid: &TypeId) -> Option<TraitObject>;
}
trait BehaviourA { fn a(&self); }
trait BehaviourB { fn b(&self); }
trait BehaviourC { fn c(&self); }
struct Thingy;
impl_unknown_for!(Thingy: BehaviourA, BehaviourC);
impl BehaviourA for Thingy {
fn a(&self) { println!("Thingy::a"); }
}
impl BehaviourC for Thingy {
fn c(&self) { println!("Thingy::c"); }
}
fn main() {
let obj: Box<Unknown> = Box::new(Thingy);
if let Some(ba) = qi!(obj, BehaviourA) { ba.a(); }
if let Some(bb) = qi!(obj, BehaviourB) { bb.b(); }
if let Some(bc) = qi!(obj, BehaviourC) { bc.c(); }
}
它们不能是双引号,因为您已在style=""
中使用双引号,该引号被解析为HTML。
它们不能是单引号,因为您已经在href=""
中使用单引号,它被解析为JavaScript字符串。
您可以使用转义单引号:'<span>...'
。这意味着它不会被解析为HTML或JS字符串分隔符,而是解析为JS字符串内容,这就是您想要的。
\'